//对象类型stream排序
List<User> users = new ArrayList<User>(){
{
add(new User("a", "1983/12/24", 36));
add(new User("a", "1993/12/24", 26));
add(new User("a", "1973/12/24", 46));
add(new User("a", "1995/12/24", 24));
add(new User("a", "1981/12/24", 38));
add(new User("a", "1991/12/24", 28));
}
}; //升序
List<User> ascUsers = users.stream().sorted(Comparator.comparing(User :: getAge)).collect(Collectors.toList());
//降序
List<User> descUsers = users.stream().sorted(Comparator.comparing(User :: getAge).reversed()).collect(Collectors.toList());

用户类:必须继承Comparable接口,否则排序调用Comparator.comparing的时候会报错,这点很重要。
public class User implements Comparable<User> {

    @NotNull
private String name; @Format(value="YYYY-MM-DD", message = "字符串格式不正确")
private String birthday; private int age; public User(){
} public User(String name, String birthday, int age){
this.name = name;
this.birthday = birthday;
this.age = age;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public int getAge() {
return age;
} public void setAge(int age) {
this.age = age;
} public String getBirthday() {
return birthday;
} public void setBirthday(String brithday) {
this.birthday = birthday;
} /**
* 两个相同类型的对象,比较多属相是否相等的时候
* 可以通过重写equals方法来实现
* @param object
* @return
*/ @Override
public boolean equals(Object object) {
if (object instanceof User) {
return this.name.equals(((User) object).getName()) && this.age == ((User) object).getAge();
} else {
return false;
}
} /**
* 重写 equals 就应当重写 hashcode
* 因为当两个对象hashcode 值相等,但是 equals 比较为 false,
* 那么在 HashMap 中会产生链表,影响查询性能
* @return
*/
@Override
public int hashCode() {
return this.name.hashCode() + age;
} @Override
public int compareTo(User user) {
return name.compareTo(user.getName());
}
}
 

最新文章

  1. WebViewJavascriptBridge使用说明(iOS)
  2. cookie 和session 的区别详解
  3. visual Sdudio 快捷键
  4. 02《老罗Android开发视频教程》第二集:android系统框架的介绍
  5. 1001. 害死人不偿命的(3n+1)猜想
  6. Android高级开发专题晋升班
  7. PHP初学者如何搭建环境,并在本地服务器(or云端服务器)运行自己的第一个PHP样例
  8. java多线程(五)-访问共享资源以及加锁机制(synchronized,lock,voliate)
  9. runners
  10. 1 分钟教会你用 Spring Boot 发邮件
  11. python 垃圾回收
  12. Linux 进程通信方式
  13. PostgreSQL事务实现
  14. Android中Sqlite数据库多线程并发问题
  15. P1258 小车问题
  16. LOJ 534 花团(线段树+dfs栈)
  17. leetcode1009
  18. 禁用wps的云文档,恢复到清爽的状态
  19. 在Zookeeper中,znode是一个跟Unix文件系统路径相似的节点,可以往这个节点存储或获取数据
  20. 事务以及MySQL事务隔离级别+MySQL引擎的区别

热门文章

  1. [luogu_P1251][LOJ#6008]「网络流 24 题」餐巾计划
  2. kvm虚拟化实践
  3. vue中如何将时间对象转换成字符串
  4. token防止重复提交
  5. Feeling kind of the sorrow
  6. 转 c++多线程编程
  7. 知乎上的一些文章---leetcode【笔记1】
  8. FZU2187 回家种地(矩形面积并)
  9. Codeforces 716C. Plus and Square Root-推公式的数学题
  10. BZOJ1858 [Scoi2010]序列操作(线段树)