List集合的排序

List集合的排序

1.对基本类型的包装类型进行排序

@Test
	public void test01() {
		List<Integer> list = new ArrayList<>();
		list.add(3);
		list.add(2);
		list.add(1);
		list.add(4);
		System.out.println("排序前:"+list);
		Collections.sort(list);
		System.out.println("排序后:"+list);
	}

运行结果如下:

   排序前:[3, 2, 1, 4]
   排序后:[1, 2, 3, 4]

2.对自定义对象的排序

@Test
	public void test02() {
		List<User> list = new ArrayList<>();
		list.add(new User(1, "aaa", 19));
		list.add(new User(4, "c", 12));
		list.add(new User(2, "bbbb", 17));
		list.add(new User(3, "dd", 22));
		for (User user : list) {
			System.out.println(user);
		}
		System.out.println("============================");
		Collections.sort(list);
		for (User user : list) {
			System.out.println(user);
		}
		System.out.println("============================");
		Collections.sort(list, new Comparator<User>() {
			@Override
			public int compare(User o1, User o2) {
				int num = o1.getName().compareTo(o2.getName());
				return num == 0 ? o1.getAge() - o2.getAge() : num;
			}
		});
		for (User user : list) {
			System.out.println(user);
		}
	}
}

运行结果

User [id=1, name=aaa, age=19]
User [id=4, name=c, age=12]
User [id=2, name=bbbb, age=17]
User [id=3, name=dd, age=22]
============================
User [id=4, name=c, age=12]
User [id=2, name=bbbb, age=17]
User [id=1, name=aaa, age=19]
User [id=3, name=dd, age=22]
============================
User [id=1, name=aaa, age=19]
User [id=2, name=bbbb, age=17]
User [id=4, name=c, age=12]
User [id=3, name=dd, age=22]

结论:对自定义对象进行排序的时候自定义对象需要实现Comparable接口并重写compareTo方法。或者使用Collections.sort(list, new Comparator())方法进行自定义排序。

猜你喜欢

转载自blog.csdn.net/jiajinlei/article/details/84189985