java List排序问题

weixin_36249441 2016-09-26 10:52:44
public static void main(String[] args) {

List<List<String>> personList = new ArrayList<List<String>>();

List<String> person1 = new ArrayList<String>();
person1.add("person1");
person1.add("25");
person1.add("180");
personList.add(person1);

List<String> person2 = new ArrayList<String>();
person2.add("person2");
person2.add("28");
person2.add("170");
personList.add(person2);

List<String> person3 = new ArrayList<String>();
person3.add("person3");
person3.add("24");
person3.add("160");
personList.add(person3);

List<String> person4 = new ArrayList<String>();
person4.add("person4");
person4.add("24");
person4.add("180");
personList.add(person4);

List<String> person5 = new ArrayList<String>();
person5.add("person5");
person5.add("25");
person5.add("180");
personList.add(person5);

List<String> person6 = new ArrayList<String>();
person6.add("person6");
person6.add("28");
person6.add("160");
personList.add(person6);

List<String> person7 = new ArrayList<String>();
person7.add("person7");
person7.add("26");
person7.add("170");
personList.add(person7);

List<String> person8 = new ArrayList<String>();
person8.add("person8");
person8.add("28");
person8.add("180");
personList.add(person8);

List<List<String>> personSort = new ArrayList<List<String>>();
}


上面这段代码中,每一个person都是一个List<String>类型的对象,里面分别是名字,年龄和身高。这8个对象都分别放在了personList里面,现在的需求是,想将这8个人(这里只是列举了8个人,实际个数不一定,所以需要循环),按照一定的顺序放到personSort这个对象里面。排列规则是:按照年龄降序排列,年龄相等的情况下按照身高降序排列。
我自己写了一下,感觉写的很麻烦,而且结果也不对,想请教一下各位大神有没有思路,有的话请详细说一下思路,如果不是很麻烦的话,能简单写一下代码吗?谢谢各位了。
...全文
272 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
当作看不见 2016-09-27
  • 打赏
  • 举报
回复
楼主思路不对,这个用一个类来处理最好,如果存储数据的话,应该使用数据库比较好解决
爱睡觉的阿狸 2016-09-27
  • 打赏
  • 举报
回复
你把集合换成实体类吧,这样更合理,现实项目中肯定都是用实体类定义人的相关信息的。 写了段代码给你参考下:
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

class Person {
	private String name;
	
	private int age;

	public void setName(String name) {
		this.name = name;
	}

	public String getName() {
		return name;
	}

	public void setAge(int age) {
		this.age = age;
	}

	public int getAge() {
		return age;
	}
	
}

public class TestListSort {
	
	public static void main(String[] args) {
		Person p1 = new Person();
		p1.setName("aaa");
		p1.setAge(22);
		Person p2 = new Person();
		p2.setName("bbb");
		p2.setAge(44);
		Person p3 = new Person();
		p3.setName("ccc");
		p3.setAge(33);
		Person p4 = new Person();
		p4.setName("ddd");
		p4.setAge(55);
		List<Person> list = new ArrayList<Person>();
		list.add(p1);
		list.add(p2);
		list.add(p3);
		list.add(p4);
		sortList(list);
		for(Person p : list){
			System.out.println(p.getName() + "," + p.getAge());
		}
	}
	
	public static void sortList(List<Person> list){
		Collections.sort(list, new Comparator<Person>() {

			@Override
			public int compare(Person o1, Person o2) {
				if(o1.getAge() > o2.getAge()){
					return 1;
				} else if(o1.getAge() == o2.getAge()){
					return 0;
				} else {
					return -1;
				}
			}
			
		});
	}

}
JJsnow 2016-09-27
  • 打赏
  • 举报
回复
排序的话为什么不用TreeSet
肃穆丶 2016-09-27
  • 打赏
  • 举报
回复
3楼做法很好
wuiiao 2016-09-27
  • 打赏
  • 举报
回复
3个数据类型不一样,你非要转换成一样的string。
爱睡觉的阿狸 2016-09-26
  • 打赏
  • 举报
回复
用冒泡排序的方法把list集合重新排序下吧
soton_dolphin 2016-09-26
  • 打赏
  • 举报
回复
你的设计有问题,不能用List定义一个人,而是应该有一个人的类,然后用List集合person类的实例

62,612

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧