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

《从C/C++到Java入门指南》- 15. Arrays.sort() JDK接口的使用

Arrays.sort() JDK接口的使用

上节学习了 Array.sort() 这个接口,但是我个人不满足于简单的正向排序,我需要一个自定义的排序,怎么弄呢?

自定义范围

需要自定义数组范围可以在第二和第三个参数中传入索引,需要注意的是第二个索引是开区间。

import java.util.Arrays;
public class Main {public static void main(String[] args) {int[] ns = new int[] {5, 4, 3, 2, 1};Arrays.sort(ns, 2, ns.length);	// ns.length 不参与排序System.out.println(Arrays.toString(ns));}
}

自定义规则

我们也可以和C++一样,自定义比较器。

import java.util.*;
public class Main {public static void main(String[] args) {Integer[] ns = new Integer[] {2, 87, 24, 45, 23, 13, 14, 156, 89};Arrays.sort(ns, new Comparator<Integer>() {public int compare(Integer a, Integer b) {return b - a;}});System.out.println(Arrays.toString(ns));}
}

这里用到的重构方法还是很熟悉的,但是这里的Integer有点意思,其实是一个将int包装后的类。

也可以使用一种更简单的方法:

import java.util.*;
public class Main {public static void main(String[] args) {Integer[] ns = new Integer[] {2, 87, 24, 45, 23, 13, 14, 156, 89};Arrays.sort(ns, (a, b) -> {return b - a;// b - a 大于零的放在前面});System.out.println(Arrays.toString(ns));}
}

当然还有一种方法,但是不过多讨论了,这里直接复制粘贴过来。

import java.util.*;public class Main {public static void main(String[] args){Integer[] arr = {5,4,7,9,2,12,54,21,1};//降序//重新实现Comparator接口Arrays.sort(arr, new compa());System.out.println(Arrays.toString(arr));}
}class compa implements Comparator<Integer>{@Overridepublic int compare(Integer o1, Integer o2) {// A.compareTo(B) A>B 返回1,A=B 返回0,A<B 返回-1// compareTo()返回值>0就交换// 如果02 > o1 就交换 =>降序return o2.compareTo(o1);}
}

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • cmake configure_package_config_file指令详解
  • 【Django】网上蛋糕商城后台-商品管理
  • Linux C++ 058-设计模式之解释器模式
  • Perl 语言的特点
  • MyBatis中的优点和缺点?
  • Linux开发板上拷贝文件
  • ES6 数组的扩展(十六)
  • Python面试宝典第15题:岛屿数量
  • CentOS6minimal安装nginx-1.26.1.tar.gz 笔记240718
  • 使用Docker 实现 MySQL 循环复制(三)
  • 持续集成08--Jenkins邮箱发送构建信息及测试报告
  • js vue axios post 数组请求参数获取转换, 后端go参数解析(gin框架)全流程示例
  • Docker-compose单机容器集群编排
  • 记录一下在Hyper-v中动态磁盘在Ubuntu中不完全用到的问题(扩展根目录)
  • 41 QOS技术(服务质量)
  • [PHP内核探索]PHP中的哈希表
  • [ JavaScript ] 数据结构与算法 —— 链表
  • 【css3】浏览器内核及其兼容性
  • 【跃迁之路】【519天】程序员高效学习方法论探索系列(实验阶段276-2018.07.09)...
  • 77. Combinations
  • CSS相对定位
  • Javascript Math对象和Date对象常用方法详解
  • Making An Indicator With Pure CSS
  • mockjs让前端开发独立于后端
  • MySQL QA
  • Promise初体验
  • RxJS 实现摩斯密码(Morse) 【内附脑图】
  • Spring Cloud Feign的两种使用姿势
  • Three.js 再探 - 写一个跳一跳极简版游戏
  • VirtualBox 安装过程中出现 Running VMs found 错误的解决过程
  • vue 个人积累(使用工具,组件)
  • 不发不行!Netty集成文字图片聊天室外加TCP/IP软硬件通信
  • 基于游标的分页接口实现
  • 码农张的Bug人生 - 见面之礼
  • 世界编程语言排行榜2008年06月(ActionScript 挺进20强)
  • 一起来学SpringBoot | 第十篇:使用Spring Cache集成Redis
  • ​马来语翻译中文去哪比较好?
  • ​你们这样子,耽误我的工作进度怎么办?
  • (C#)if (this == null)?你在逗我,this 怎么可能为 null!用 IL 编译和反编译看穿一切
  • (C++17) optional的使用
  • (层次遍历)104. 二叉树的最大深度
  • (附源码)spring boot公选课在线选课系统 毕业设计 142011
  • (附源码)spring boot智能服药提醒app 毕业设计 102151
  • (附源码)计算机毕业设计高校学生选课系统
  • (转)从零实现3D图像引擎:(8)参数化直线与3D平面函数库
  • (转)树状数组
  • .Net 8.0 新的变化
  • .net mvc 获取url中controller和action
  • .netcore 如何获取系统中所有session_如何把百度推广中获取的线索(基木鱼,电话,百度商桥等)同步到企业微信或者企业CRM等企业营销系统中...
  • .Net各种迷惑命名解释
  • /var/log/cvslog 太大
  • :not(:first-child)和:not(:last-child)的用法
  • @vue-office/excel 解决移动端预览excel文件触发软键盘
  • [ C++ ] STL_vector -- 迭代器失效问题
  • [ HTML + CSS + Javascript ] 复盘尝试制作 2048 小游戏时遇到的问题