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

新疆好地方app下载安装一码通/seo软文代写

新疆好地方app下载安装一码通,seo软文代写,西安移动网站建设,私人代理服务器排序是编程中经常需要用到的功能,而 Java 的工具类 Collections 中也提供了 sort 方法用于实现对列表等集合中元素的排序。Collections.sort() 方法有两种形式:Collections.sort(List) 和 Collections.sort(List, Comparator)。第一种 Collections.sort(…

排序是编程中经常需要用到的功能,而 Java 的工具类 Collections 中也提供了 sort 方法用于实现对列表等集合中元素的排序。Collections.sort() 方法有两种形式:Collections.sort(List) 和 Collections.sort(List, Comparator)。

第一种 Collections.sort(List) 要求 List 中的元素已经实现了 Comparable 接口,第二种 Collections.sort(List, Comparator) 则需要实现一个比较器。基于比较的排序的关键就是能比较两个元素的大小,知道了谁大谁小,才能确定谁排在前面谁排在后面;而这两种方法的本质都是为了确定两个元素谁大谁小。接下来主要谈一谈基于比较器的自定义排序。

先看个排序示例:

public static void main(String[] args) {

Integer[] input = { 1, 3, 8, 7, 4, 9, 2 };

List lst = Arrays.asList(input);

Collections.sort(lst);

System.out.println(lst);

}

//输出为: [1, 2, 3, 4, 7, 8, 9]

可以看到,原本无序的列表变成了从小到大排列。原因有二:

Integer 类实现了 Comparable 接口,使得元素之间可以比较大小

sort 方法默认是从小到大排列(这点非常重要)

然而大多数情况下,我们想要的都不是简单的升序排列,这时候自定义排序就要派上用场了。Comparator 实现自定义排序的关键是实现 compare 方法,该方法声明为:

int compare(T o1, T o2);

当方法返回负值时,代表 o1 < o2;当方法返回 0 时,代表 o1 = o2;当方法返回正值时,代表 o1 > o2;下面以实现降序排列为例,演示如何使用 Comparator。

###一、降序排列

public class Main {

public static void main(String[] args) {

Integer[] input = { 1, 3, 8, 7, 4, 9, 2 };

List lst = Arrays.asList(input);

Collections.sort(lst, new IntComparator());

System.out.println(lst);

}

}

class IntComparator implements Comparator {

public int compare(T a, T b) {

return (Integer)b - (Integer)a;

}

}

//输出为: [9, 8, 7, 4, 3, 2, 1]

为什么这样就实现了降序排列呢?

这是因为当传入 Comparator 参数时, sort 方法会将需要比较大小的两个元素 a,b 作为参数传给 Comparator.compare(T a, T b) 方法,根据返回的结果判断 a,b 的大小。例如,传入1 和 3 的时候,compare 返回 2,正值代表 a > b,即 1 “大于” 3,这个“大于”正是我们自己定义的规则。然后,根据 sort 方法默认从小到大排序的性质,小的排在前面,所以最后 3 排在 1 前面,也就实现了降序排列。

在这里 return (Integer)b - (Integer)a; 是一种经验写法,如果分解开来应该是这样:

class IntComparator implements Comparator {

public int compare(T a, T b) {

int num1 = (Integer)a;

int num2 = (Integer)b;

if(num1 > num2) { //如果 a>b,根据自定义规则 a 应该在前面,即自定义规则中 a “小于” b,故此时返回负值

return -1;

} else if(num1 < num2) {

return 1;

} else {

return 0;

}

}

}

该 compare 方法非常简单,但在实际应用中,由于自定义规则的复杂性,compare 的编写难度也可能变得很大。下面再举一例,让大家加深对 compare 的理解。

###二、奇偶排列   要求:奇数排在偶数前面,奇数之间从小到大排列,偶数之间从大到小排序

class IntComparator implements Comparator {

public int compare(T a, T b) {

int num1 = (Integer)a;

int num2 = (Integer)b;

if(num1 % 2 == 1 && num2 % 2 == 1) {

return num1 - num2; // ①

} else if(num1 % 2 == 0 && num2 % 2 == 0) {

return num2 - num1; // ②

} else if(num1 % 2 == 1 && num2 % 2 == 0) {

return -1; // ③

} else {

return 1; // ④

}

}

}

① ② 表示两数同奇或同偶的情况,此时根据经验写法很容易得到。

③ ④ 表示奇偶不同的情况,此时若 a 为奇数,b 为偶数,则 a 应该排在 b 前面,即 a “小于” b,故返回负值;反之,返回正值。

最后,再次强调:排在前面的元素“小”,排在后面的元素“大”。

留个练习,有兴趣的朋友可以做下,看看自己是不是真的掌握了。

练习题:实现数字按照高位到低位的比较,进行降序排序;高位相同的,位数少的排前面。例如:输入 {3, 34, 5, 7, 56, 523, 52, 571};输出 {7, 5, 571, 56, 52, 523, 3, 34}

http://www.lbrq.cn/news/1065637.html

相关文章:

  • 国外的有趣设计网站/阳江seo
  • 如何做网站收徒弟网站/重庆关键词优化
  • 如何做自己的论坛网站/什么是seo优化推广
  • 顺德装修网站建设/全网媒体发布平台
  • 新网做网站流程/班级优化大师下载安装最新版
  • 做网站看/世界大学排名
  • 摄影设计网站/0元做游戏代理
  • 手机网站的模板下载软件/北京seo的排名优化
  • 做苗木行业网站赚钱/百度seo优化排名客服电话
  • 网站建设公司知名企业/网页首页设计图片
  • 代刷网站怎么做/电子商务网站设计方案
  • 怎么创建网站挣钱/郑州聚商网络科技有限公司
  • 建设网站前准备资料/高明搜索seo
  • 青岛建设网站/宁波seo网络推广
  • 新疆做网站的公司/搜索引擎seo优化平台
  • 做个网址需要多少钱/长沙关键词优化新行情报价
  • 制作图片模板/淘宝关键词优化怎么弄
  • 深圳网站建设商家/郑州seo招聘
  • wordpress主题 付费/宁波seo教程推广平台
  • 小程序制作需要什么条件/电商中seo是什么意思
  • 网站建设模板免费下载/网站权重查询接口
  • 怎样说服老板做网站/网站转让出售
  • 网站开发背景图片/百度搜索榜
  • 网站开发建设方案的主要内容包括/百度seo霸屏软件
  • 做博彩的网站犯法吗/做网页多少钱一个页面
  • 南昌知名网站建设公司/爱站网关键词查询
  • 哪家建设网站好/站长工具查询系统
  • 镇江网站制作公司/seo教育培训机构
  • 中国十大知名网站建设/竞价专员是做什么的
  • 成都医疗seo整站优化/新冠咳嗽怎么办
  • FreeRTOS源码分析四:时钟中断处理响应流程
  • app-1
  • Linux文件权限管理与ACL配置指南
  • 研报复现|史蒂夫·路佛价值选股法则
  • 广东省省考备考(第六十五天8.3)——判断推理:图形推理(数量规律题目总结)
  • 吴恩达【prompt提示词工程】学习笔记