问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

4.9 深入理解Arrays.sort(T[],Comparator<? super T>c)

发布网友 发布时间:2023-04-22 13:54

我来回答

1个回答

热心网友 时间:2023-10-19 21:21

Arrays.sort(T[],Comparator<? super T>c)是一种用于对用户定义的对象数组进行排序的方法。官方的Java Doc 简单地描述它做了什么,但不是深入立即。在这篇文章中,我将介绍关键信息,以便更深入地介绍这种方法。

通过阅读下面的例子,你可以对如何使用这个方法有个正确的认识。定义一个比较器,用于按照狗的尺寸来比较大小,然后比较器用排序方法的参数。

输出:

这是一个很好使用策略模式的例子,值得注意的是为什么策略模式在这里会比较适合。简而言之,策略模式准许在运行时候选择不同的算法。在这种情况下,通过传递不同的比较器,可以选择不同的算法。基于上面的例子,假若你有另外一个比较器,比较狗的重量而不是大小,你可以简单地创建一个新的比较器,如下:

Comparator 仅仅是个接口,任何实现这个接口的比较器都可以在运行时候被使用。这是策略模式的关键思想。

如果直接用Comparator<T> c 作为参数,第二个参数是"Comparator<? super T> c" <? super T>意味这类型可以是T或者它的父类型。为什么准许父类型。答案是:
这种方法准许为所有的子类使用相同的比较器。以下的示例是明显的:

1、用通用父类。
2、策略模式。
3、合并排序-nlog(n)时间复杂度。
4、Java.util.Collections.sort(List <T> list,Comparator <?super T> c)与Arrays.sort有类似的思想。
Arrays.sort的用法

1.sort(byte[] a)对指定的 byte 型数组按数字升序进行排序。sort(byte[] a, int fromIndex, int toIndex)对指定 byte 型数组的指定范围按数字升序进行排序。sort(char[] a)对指定的 char 型数组按数字升序进行排序。sort(char[] a, int fromIndex, int toIndex)对指定 char 型数组的指定范围...

Arrays.sortarrays.sort用法

sort(T[] a, Comparator c):使用指定的比较器对对象数组进行排序。 sort(T[] a, int fromIndex, int toIndex, Comparator c):根据比较器对指定范围的对象数组进行排序。每个方法的第二个和第三个参数(fromIndex和toIndex)允许你指定排序的范围,从fromIndex(包含)到toIndex(不包含),以对...

public static &lt;T&gt; void sort(T[] a, Comparator&lt;? super T&gt; c)

? super T 为所有T的超类 只用于参数 T[] a 表示数组

arrays.sort排序后保存结果

2、Arrays.sort(int[]a,intfromIndex,inttoIndex),这种形式是对数组部分排序,也就是对数组a的下标从fromIndex到toIndex-1的元素排序,注意:下标为toIndex的元素不参与排序哦!3、publicstaticvoidsort(T[]a,intfromIndex,inttoIndex,Comparatorc),上面有一个拘束,就是排列顺序只能是从小到大,...

Java8 Arrays.sort() 传入Comparator比较器报错

因为没有传入集合的操作 那只是个数组工具不要难为人家了 public class Arraysextends Object 此类包含用来操作数组(比如排序和搜索)的各种方法。此类还包含一个允许将数组作为列表来查看的静态工厂。除非特别注明,否则如果指定数组引用为 null,则此类中的方法都会抛出 NullPointerException。此类中所含方法...

java中怎么 对数组里的 元素 按出现的顺序排序

其实这个用java.utils.Arrays这个对象里的sort(T[],Comparator)的这个方法就可以了。String[] words = new String[] { "apple", "dog", "apple", "dog", "apple", "cat", "cat", "dog", "lamb" }; Arrays.sort(words, String.CASE_INSENSITIVE_ORDER);这样words就已经被排序了。Plus:...

还是搞不明白compareTo()方法

在底层对集合进行排序将不再是用Arrays.mergeSort(Object[] src,Object[] dest,int low,int high,int off),而是是用Arrays.mergeSort(Object[] src,Object[] dest,int low,int high,int off,Comparator c),比较大小则是用了c.compare(dest[j-1], dest[j])。

一个有关java comparable接口实现的问题,本人初学java,问下下面程序...

修改main函数里面的Arrays.sort(t);为 Arrays.sort(t, new Comparator&lt;TwoDimensionalShape&gt;(){ public int compare(TwoDimensionalShape o1, TwoDimensionalShape o2) { return o1.getArea() &gt; o2.getArea()? 1: -1;}});

java Comparable和Comparator理解

其实这个过程可以这么理解:一个实现了Comparable接口的类,它的实例才是具有可比性的,才能使用Array.sort这类工具排序。而Array.sort是怎么实现排序的呢?就是调用了实例的Compareto方法。现在来看输出结果:the age = 4,getAge = 2---① the age = 4,getAge = 1---② the age = 2,getAge ...

Java中怎么取出数组中某个单位的某个值进行排序?

sort(T[] a, Comparator&lt;? super T&gt; c)用这个函数,自定义comparator函数实现最后一个值排序 import java.util.Arrays;import java.util.Comparator;public class TestDengCha { public static void main(String[] agrs) { Student[] s = new Student[5]; s[0] = new Student("西西", 59...

Arrays.sort mergesort heapsort c++sort c sort sort怎么用 sort 排序 T_T T.I
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
五羊本田摩托车125c太费油 拖泥带水,束手无策,是什么生肖? 北汽幻速S7两年车都有哪些费用? 新北汽幻速s7这款车后期的维护大致要多少钱?花费大吗? 新学期的打算250字作文。。。急急 一般冷暴力的话有什么? 逻辑学怎么造句 想知道: 松原市 从长岭县到集体乡胜利村怎么坐公交 孕期不同阶段进行自然胎教的方法 香港路•浅水湾配套信息 重庆沙坪坝有多少链家分店 中国武术的创使人是谁 中国现在最著名的武术家是谁 青岛大学考研压分数吗 山东考研压分真的很严重吗 山东省考研英语二阅卷压分吗 网络广告的计费方式有哪几种? 荣威rx5plus有没有运动模式 宏硕宏硕种子每亩产量能出多高 更名的拼音狐更名的拼音是什么 宏硕二字的笔画总数是几画. 宏硕,硕扬,酷耶,逆昂,哪个性价比比较高? 更名的诗词更名的诗词是什么 宏硕的解释 文言文《学弈》《两小儿辩日》50字 不崇朝的词语不崇朝的词语是什么 谋朝的成语 谋朝的成语是什么 清明节是苏轼写的吗 送项仲融游金陵三首原文_翻译及赏析 枘方的词语枘方的词语是什么 龙泉链家万大门店地址 北京链家京西北事业部在哪儿 电子手刹没反应是什么问题? 右前轮被撞,电子手刹失灵怎么回事 行车电脑故障导致电子手刹失灵 几款好喝不贵的平民酱香白酒 电脑安全软件哪个好用?360安全卫士怎么样? 有限责任公司能转为股份有限公司吗 有限责任公司转为股份有限公司的条件 有限责任公司可以变更为股份有限公司 有限公司变成股份有限公司的条件 新手如何从0开始做抖音直播 梦见被狗咬破手指流血的预兆 梦见狗咬到手指而出血的预兆 梦见狗咬手指流血印子的预兆 梦见狗咬了手出血的预兆 不在意说说 大鹏宋小宝吃饭会说话的鱼哪一集 宋小宝小品你长的太大了是哪一期 苹果手机打不开sap系统