Java实现List中集合的元素进行排序
【摘要】 简单集合排序 public static List<Integer> getIntegerList(){ List<Integer> integerList = new ArrayList<>(); integerList.add(23); integerList.add(15); integerList.add(35); ...
简单集合排序
public static List<Integer> getIntegerList(){
List<Integer> integerList = new ArrayList<>();
integerList.add(23);
integerList.add(15);
integerList.add(35);
integerList.add(68);
integerList.add(43);
integerList.add(8);
return integerList;
}
/**
* Integer集合排序
*/
@Test
public void sortIntegerList(){
List<Integer> integerList = getIntegerList();
System.out.println("排序前:"+integerList);
//Integer本身有实现Comparable接口
Collections.sort(integerList);
System.out.println("排序后:"+integerList);
}
输出:
排序前:[23, 15, 35, 68, 43, 8]
排序后:[8, 15, 23, 35, 43, 68]
根据对象集合某个字段排序
public static List<User> getUserList(){
List<User> userList = new ArrayList<>();
userList.add(new User("小明",11,"北京",66));
userList.add(new User("小红",12,"上海",99));
userList.add(new User("小詹",14,"广州",77));
userList.add(new User("小龙",16,"深圳",55));
userList.add(new User("小斯",9,"迈阿密",33));
userList.add(new User("小布",12,"伦敦",88));
return userList;
}
@Test
public void sortUserListByAge(){
List<User> userList = getUserList();
System.out.println("排序前:"+userList);
//如果想直接通过Collections.sort(userList)排序,需要User实现Comparable接口,并重写compareTo方法
Collections.sort(userList, new Comparator<User>() {
@Override
public int compare(User o1, User o2) {
//由小到大排序
return o1.getAge() - o2.getAge();
//由大到小排序
//return o2.getAge() - o1.getAge();
}
});
System.out.println("排序后:"+userList);
}
输出:
排序前:[User(name=小明, age=11, city=北京, score=66), User(name=小红, age=12, city=上海, score=99), User(name=小詹, age=14, city=广州, score=77), User(name=小龙, age=16, city=深圳, score=55), User(name=小斯, age=9, city=迈阿密, score=33), User(name=小布, age=12, city=伦敦, score=88)]
排序后:[User(name=小斯, age=9, city=迈阿密, score=33), User(name=小明, age=11, city=北京, score=66), User(name=小红, age=12, city=上海, score=99), User(name=小布, age=12, city=伦敦, score=88), User(name=小詹, age=14, city=广州, score=77), User(name=小龙, age=16, city=深圳, score=55)]
根据对象集合多个字段排序
@Test
public void sortUserList(){
List<User> userList = getUserList();
System.out.println("排序前:"+userList);
//如果想直接通过Collections.sort(userList)排序,需要User实现Comparable接口,并重写compareTo方法
Collections.sort(userList, new Comparator<User>() {
@Override
public int compare(User o1, User o2) {
//先按照年龄排序
int i = o1.getAge() - o2.getAge();
if(i == 0){
//如果年龄相等再用分数进行排序
return o1.getScore() - o2.getScore();
}
return i;
}
});
System.out.println("排序后:"+userList);
}
输出:
排序前:[User(name=小明, age=11, city=北京, score=66), User(name=小红, age=12, city=上海, score=99), User(name=小詹, age=14, city=广州, score=77), User(name=小龙, age=16, city=深圳, score=55), User(name=小斯, age=9, city=迈阿密, score=33), User(name=小布, age=12, city=伦敦, score=88)]
排序后:[User(name=小斯, age=9, city=迈阿密, score=33), User(name=小明, age=11, city=北京, score=66), User(name=小布, age=12, city=伦敦, score=88), User(name=小红, age=12, city=上海, score=99), User(name=小詹, age=14, city=广州, score=77), User(name=小龙, age=16, city=深圳, score=55)]
本文内容到此结束了,
如有收获欢迎点赞👍收藏💖关注✔️,您的鼓励是我最大的动力。
如有错误❌疑问💬欢迎各位大佬指出。
保持热爱,奔赴下一场山海。🏃🏃🏃
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)