屌炸天,JDK8的排序大法!!
来源:互联网 发布:淘宝标题关键词测试 编辑:程序博客网 时间:2024/06/15 13:55
首先祝大家端午节快乐!
今天总结了下JDK中排序的方法,包括JDK8中强大的lambda表达式及函数式接口运用,不废话,请看下面示例。
public class Test {
public static void main(String[] args) {
List list = initList();
// jdk8之前的排序
Collections.sort(list, newComparator() {
@Override
public int compare(User o1, User o2) {
return o1.getAge().compareTo(o2.getAge());
}
});
// jdk8 lambda排序,带参数类型
list = initList();
list.sort((User u1, User u2) -> u1.getAge().compareTo(u2.getAge()));
list.forEach(System.out::println);
System.out.println();
// jdk8 lambda排序,不带参数类型
list = initList();
list.sort((u1, u2) -> u1.getAge().compareTo(u2.getAge()));
list.forEach(System.out::println);
System.out.println();
// jdk8 排序,User类静态方法引用
list = initList();
list.sort(User::compareAge);
list.forEach(System.out::println);
System.out.println();
// jdk8 升序排序,Comparator提供的静态方法
list = initList();
Collections.sort(list, Comparator.comparing(User::getAge));
list.forEach(System.out::println);
System.out.println();
// jdk8 降序排序,Comparator提供的静态方法
list = initList();
Collections.sort(list, Comparator.comparing(User::getAge).reversed());
list.forEach(System.out::println);
System.out.println();
// jdk8 组合排序,Comparator提供的静态方法,先按年纪排序,年纪相同的按名称排序
list = initList();
Collections.sort(list, Comparator.comparing(User::getAge).thenComparing(User::getName));
list.forEach(System.out::println);
}
private static List initList() {
List list = new ArrayList<>();
list.add(new User("lisa", 23));
list.add(new User("tom", 11));
list.add(new User("john", 16));
list.add(new User("jennis", 26));
list.add(new User("tin", 26));
list.add(new User("army", 26));
list.add(new User("mack", 19));
list.add(new User("jobs", 65));
return list;
}
}
看完有没有觉得很惊艳,简直屌炸天,Lumbda表达式+函数式接口还有更多强大的应用下回再做个专题介绍。
- 屌炸天,JDK8的排序大法!!
- JDK8 排序
- 逗比的睡眠排序大法
- Python大法列表排序
- python 中的排序大法
- 排序大法之希尔排序
- 排序大法之归并排序
- jdk8 parallelSort并行排序
- jdk8 list排序
- jdk8使用lambda表达式排序
- 微软的改名大法
- about jdk8--转的
- JDK8环境变量的配置
- JDK8的@CallerSensitive
- JDK8的小常识
- JDK8新特性:使用stream、Comparator和Method Reference实现集合的优雅排序
- jdk8对list的各种处理实例详解,包括去重,排序,过滤,分组,统计
- jdk8
- Spring零配置之@Configuration注解详解。
- 一张图搞懂Spring bean的完整生命周期。
- JAVA元注解@interface详解(@Target,@Documented,@Retention,@Inherited)。
- 自定义View (五) 阴影、渐变
- IntegerCache的妙用和陷阱!
- 屌炸天,JDK8的排序大法!!
- 为什么byte取值-128~127??
- 高级JAVA码农必须搞清楚它们的区别:instanceof、isInstance、isAssignableFrom
- hashCode到底有什么用?
- E
- java高级应用:线程池全面解析
- 学习java多线程,这必须搞懂的这几个概念,很重要。
- 子午圈和卯酉圈的定义
- 你知道void和Void的区别吗?