lambda函数是变成对集合进行排序的几种方式
来源:互联网 发布:汽车用品淘宝 编辑:程序博客网 时间:2024/06/18 05:34
先来一个集合:
List<Point> points = Arrays.asList( new Point(1, 2), new Point(3, 2), new Point(4, 2), new Point(2, 2));
方式一:
// 比较器方法Comparator<Point> byX = new Comparator<Point>() { @Override public int compare(Point p1, Point p2) { return Double.compare(p1.getX(), p2.getX()); }};
方式二(最简单):
Comparator<Point> byX = Comparator.comparing(Point::getX);
方式三(过时):
Comparator<Point> byX = (p1, p2) -> Double.compare(p1.getX(), p2.getX());
方式四:
Function<Point, Double> keyExtractor = point -> point.getX();Comparator<Double> keyComparer = Double::compare;Comparator<Point> byX = (p1, p2) -> keyComparer.compare(keyExtractor.apply(p1), keyExtractor.apply(p2));
方式五(方式四的进阶版推荐):
// 封装一个比较的方法public static <T,U extends Comparable<U>> Comparator<T> comparing(Function<T,U> keyExtractor){ return Comparator.comparing(keyExtractor::apply);}Function<Point, Double> keyExtractor = point -> point.getX();Comparator<Point> byX = comparing(keyExtractor);
测试:
System.out.println("排序前:" + points);points.sort(byX);System.out.println("排序后:" + points);
测试结果:
排序前:[java.awt.Point[x=1,y=2], java.awt.Point[x=3,y=2], java.awt.Point[x=4,y=2], java.awt.Point[x=2,y=2]]排序后:[java.awt.Point[x=1,y=2], java.awt.Point[x=2,y=2], java.awt.Point[x=3,y=2], java.awt.Point[x=4,y=2]]
本文参考:《精通lambda表达式:java多核编程》
阅读全文
0 0
- lambda函数是变成对集合进行排序的几种方式
- 对集合进行排序
- 对集合进行排序
- 对集合进行排序
- 对集合进行排序
- 对集合进行排序
- 对字符串中的字母进行排序,变成有序的字符串
- 对hibernate的set集合进行排序
- 对hibernate的set集合进行排序
- 对hibernate的set集合进行排序
- java集合进行排序的两种方式
- java集合进行排序的两种方式
- TreeSet对元素进行排序实现的两种方式
- 对ArrayList进行排序的两种方式
- 对map集合进行排序
- 对map集合进行排序
- 对map集合进行排序
- 对map集合进行排序
- JSONObject解析-json串中字典类型解析
- linux下非oracle用户访问数据库
- 大地坐标系转换为地心空间直角坐标系
- spring-boot-data-jpa
- 数据结构实验之查找五:平方之哈希表
- lambda函数是变成对集合进行排序的几种方式
- golang判断文件或文件夹是否存在
- js-完美物体运动框架
- WEEX,一次撰写,多端运行
- 洛谷 P1597 语句解析
- 伪知识之了解数据库中外键主键的区别以及含义持续更新:【内向即失败--王奕君】
- 手势识别代码详细说明2(衔接上一篇)
- 在Windows下编译Mapnik的依赖库
- Draggrid 频道管理