当前位置: 首页 > news >正文

Java 排序梳理 sort

文章目录

      • 1 数组排序,Arrays.sort()
        • 1.1 lambda表达式
        • 1.2 Comparator
      • 2 List 排序,Collections.sort()
      • 3 自建类
        • 3.1 lambda 表达式
        • 3.2 Comparable<>接口
      • 4 ps

1 数组排序,Arrays.sort()

int[][] a = {{3, 1},{1, 4},{9, 2}};
1.1 lambda表达式

按首元素顺序排序。两者等价。

Arrays.sort(a, (o1, o2) -> o1[0] - o2[0]);
// 防溢出,o1[0] - o2[0] 大于 2 ^ 32
Arrays.sort(a, (o1, o2) -> Integer.compare(o1[0], o2[0]));

先按首元排序,然后按次元。
两种同样可以等价

Arrays.sort(a, (o1, o2) -> {if (o1[0] != o2[0]) return o1[0] - o2[0];return o1[1] - o2[1];});Arrays.sort(a, (o1, o2) -> {if (o1[0] != o2[0]) return Integer.compare(o1[0], o2[0]);return Integer.compare(o1[1], o2[1]);});
1.2 Comparator

两种写法

Arrays.sort(a, Comparator.comparingInt(o -> o[0]));Arrays.sort(a, new Comparator<int[]>() {@Overridepublic int compare(int[] o1, int[] o2) {return o1[0] - o2[0]; // return Integer.compare(o1[0], o2[0])}});

2 List 排序,Collections.sort()

用法与 Arrays.sort() 相同。此方法用于 List,仅此而已。

List<Integer> numbers = new ArrayList<>(Arrays.asList(5, 3, 8, 1, 2));
Collections.sort(numbers);  // 顺序
Collections.sort(numbers, (a, b) -> b - a);  // 逆序

3 自建类

3.1 lambda 表达式
Arrays.sort(points, (p1, p2) -> Integer.compare(p1.l, p2.l));
3.2 Comparable<>接口

重载 compareTo() 函数

class Point implements Comparable<Point> {int x, y;public Point(int x, int y) {this.x = x;this.y = y;}public int compareTo(Point other) {return Integer.compare(this.x, other.x); // 按x坐标排序}
}Arrays.sort(points, 0, n);

4 ps

String 是可比较类型

String[] names = {"Alice", "Bob", "Charlie"};
Arrays.sort(names);

相关文章:

  • 判断链表是否为环(Java版本自己用)
  • 远程服务器的mysql连接不上,问题出在哪里
  • 高尔夫球规则及打法·棒球1号位
  • aws服务(四)文件存储服务S3 介绍使用代码集成
  • 2024年TETCI SCI2区:增强差分进化麻雀搜索算法DSSADE,深度解析+性能实测
  • 安恒Web安全面试题
  • OpenCV第5课 图像的基本操作
  • 【LaTeX】图片大小调整和并排放置
  • 高品质性价比之王-特伦斯便携钢琴V10
  • Wasm Client SDK线上优化
  • word显示段落标记符(¶)而不是回车符
  • 【Linux内核设计与实现】第三章——进程管理01
  • 如何动态调整Python爬虫的Request请求延迟
  • 第 5 篇:初试牛刀 - 简单的预测方法
  • lmgrd web api调用
  • 《作用域大冒险:从闭包到内存泄漏的终极探索》
  • 【leetcode题解】算法练习
  • 5V 1A充电标准的由来与技术演进——从USB诞生到智能手机时代的电力革命
  • 力扣面试150题--插入区间和用最少数量的箭引爆气球
  • 【22】Strongswan sa ——IKE_SA task_manager_v1
  • 同济研究生开发AI二维码走红拿下大奖,新一代00开发者掀起AI创业潮
  • 广西气象干旱面积97.5%,影响人畜饮水、农业生产
  • 京东:自21日起,所有超时20分钟以上的外卖订单全部免单
  • 视觉周刊|第五届中国国际消费品博览会展现全球合作新格局
  • 世界读书日|南京图书馆开了首个网络文学主题阅读空间
  • 北理工再通报:开除宫某党籍,免去行政职务,解除聘用关系