Java根据对象的某个字段排序
2017-01-15 22:35
871 查看
正好最近在项目开发中需要对保存在一个List中的对象根据其字段排序,遂总结一下吧,作为一个代码的搬运工,也是需要理解其原理的。
来一个简单的Person类:
现在的需求是根据姓名的拼音首字母进行排序,看代码实现:
使用Collections.sort方法,传一个Comparator实现类,比较对象字段实现compare方法。
反正我是比较喜欢lambda的写法(使用任何能让我少写代码的方法):
Java中的对象排序都会跟
http://www.journaldev.com/780/comparable-and-comparator-in-java-example
http://www.importnew.com/15259.html
https://sanaulla.info/2013/03/11/using-lambda-expression-to-sort-a-list-in-java-8-using-netbeans-lambda-support/
来一个简单的Person类:
public class Person { private Long id; private String name; public Person(Long id, String name) { this.id = id; this.name = name; } public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } @Override public String toString() { return "Person{" + "id=" + id + ", name='" + name + '\'' + '}'; } }
现在的需求是根据姓名的拼音首字母进行排序,看代码实现:
@Test public void testSort() { Person p1 = new Person(1l, "周杰伦"); Person p2 = new Person(3l, "刘德华"); Person p3 = new Person(2l, "张学友"); Person p4 = new Person(4l, "成龙"); Person p5 = new Person(5l, "胶布虫"); List<Person> persons = Arrays.asList(p1, p2, p3, p4, p5); Collections.sort(persons, new Comparator<Person>() { @Override public int compare(Person o1, Person o2) { Collator collator = Collator.getInstance(Locale.CHINA); return collator.compare(o1.getName(), o2.getName()); } }); }
使用Collections.sort方法,传一个Comparator实现类,比较对象字段实现compare方法。
反正我是比较喜欢lambda的写法(使用任何能让我少写代码的方法):
Collections.sort(persons, (o1, o2) -> { Collator collator = Collator.getInstance(Locale.CHINA); return collator.compare(o1.getName(), o2.getName()); }); // another way persons.sort((p1, p2) -> p1.getName.compareTo(p2.getName));
Java中的对象排序都会跟
Comparable
Comparator这两个接口扯上关系,网上已经有很多文章描述了,附文一篇,大家去看吧(实在不想重复造轮子的写,没那个时间):
http://www.journaldev.com/780/comparable-and-comparator-in-java-example
http://www.importnew.com/15259.html
https://sanaulla.info/2013/03/11/using-lambda-expression-to-sort-a-list-in-java-8-using-netbeans-lambda-support/
相关文章推荐
- Java根据容器(List,ArrayList)内对象的字段排序
- java 对象排序,根据多个字段进行排序
- java 根据对象中的某一项进行排序
- List<Entity>排序:根据javabean中的一个字段对beanList进行排序
- java list 根据对象的一个属性排序
- 对象根据字段排序
- 花旗软件 电面问题(一) 根据对象的某一属性排序一组对象(JAVA实现)
- J2SE基础夯实系列之List中的数据如何根据对象的某一个或多个字段排序引出Comparable和comparator的使用
- Java 之List根据对象字段名去重复
- java ArrayList根据存储对象排序
- java当中对对象当中某表字段排序实现
- Java按照List内存储的对象的某个字段进行排序
- 【原创】Java 对 List 内对象根据对象属性进行排序
- 多字段 java对象排序
- J2SE基础夯实系列之List中的数据如何根据对象的某一个或多个字段排序引出Comparable和comparator的使用
- java对list里面的对象进行多字段排序(借鉴整理)
- java中list里面存放map,根据map中的某一个字段进行排序
- 根据list对象中的某一字段排序
- java根据对象的日期格式的字段进行降序排序
- List集合对象根据字段排序