1
Java 实现 List 中集合的元素进行排序
作者:共饮一杯无
- 2022-11-12 浙江
本文字数:1958 字
阅读完需:约 6 分钟
简单集合排序
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)]
复制代码
本文内容到此结束了,
如有收获欢迎点赞👍收藏💖关注✔️,您的鼓励是我最大的动力。
如有错误❌疑问💬欢迎各位大佬指出。
保持热爱,奔赴下一场山海。🏃🏃🏃
划线
评论
复制
发布于: 刚刚阅读数: 5
版权声明: 本文为 InfoQ 作者【共饮一杯无】的原创文章。
原文链接:【http://xie.infoq.cn/article/fce68118fb69ce9b08c5fcd22】。文章转载请联系作者。
共饮一杯无
关注
鲜衣怒马意气风发,愿你归来仍是少年。 2018-10-19 加入
全栈开发者,CSDN博客专家,51CTO 专家博主,阿里云专家博主,华为云享专家,持续输出干货,欢迎关注。
评论