ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

【Java】List排序方法(包括对象、Map等内部排序实现)

2022-08-15 02:01:50  阅读:232  来源: 互联网

标签:sort Map Java name People age 鬼谷子 排序


前言



一、常规排序

/**
* String类型的集合排序
*/
void stringListTest() {
        List<String> list = Arrays.asList("王羲之", "张三丰", "vbe", "123", "李斯", "bf", "王淼", "鬼谷子", "415", "秦始皇");
    	list.sort(String::compareTo); 		  	// 正序
    	list.sort(Comparator.reverseOrder()); 	// 逆序
    	// Collections.sort(list);
    	// Collections.sort(list,Comparator.reverseOrder());
}
// 排序前:[王羲之, 张三丰, vbe, 123, 李斯, bf, 王淼, 鬼谷子, 415, 秦始皇]
// 正序后:[123, 415, bf, vbe, 张三丰, 李斯, 王淼, 王羲之, 秦始皇, 鬼谷子]
// 逆序后:[鬼谷子, 秦始皇, 王羲之, 王淼, 李斯, 张三丰, vbe, bf, 415, 123]

/**
* Integer类型的集合排序
*/
void integerListTest() {
        List<Integer> list = Arrays.asList(2, 4, 1, 54, 2);
        list.sort(Integer::compareTo);			// 正序
        list.sort(Comparator.reverseOrder());	// 逆序
}
// 排序前:[2, 4, 1, -3, 34, -123, 0, 54, 2]
// 正序后:[-123, -3, 0, 1, 2, 2, 4, 34, 54]
// 逆序后:[54, 34, 4, 2, 2, 1, 0, -3, -123]

二、内部属性排序

实体类
@Data
public class People {
    private String name;	// 姓名
    private Integer age;	// 年龄
}
对内部属性排序
// 创建peopleList数据进行测试
// 排序前:[People(name=鬼谷子, age=2), People(name=bf, age=26), People(name=鬼谷子, age=44), People(name=王淼, age=99)]
List<People> peopleList = new ArrayList<>();

// 对象单个属性正序排序
// [People(name=鬼谷子, age=2), People(name=bf, age=26), People(name=鬼谷子, age=44), People(name=王淼, age=99)]
peopleList.sort(Comparator.comparing(People::getAge));

// 对象多个属性正序排序
// [People(name=bf, age=26), People(name=王淼, age=99), People(name=鬼谷子, age=2), People(name=鬼谷子, age=44)]
peopleList.sort(Comparator.comparing(People::getName).thenComparing(People::getAge);

// 对象多个对象排序,并且要求年龄倒序(先对name正序,然后对age倒序)
// [People(name=bf, age=26), People(name=王淼, age=99), People(name=鬼谷子, age=44), People(name=鬼谷子, age=2)]
peopleList.sort(Comparator.comparing(People::getName).thenComparing(People::getAge, Comparator.reverseOrder()));

标签:sort,Map,Java,name,People,age,鬼谷子,排序
来源: https://www.cnblogs.com/suhai/p/15577046.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有