草庐IT

comparator

全部标签

java - 如何对 map 列表进行二次排序

假设我有以下map列表[{id:1,count:2,name:xyz},{id:2,count:3,name:def},{id:3,count:2,name:abc},{id:4,count:5,name:ghj}]我首先想按计数然后按名称对这张map进行排序:期望的输出:[{id:3,count:2,name:abc},{id:1,count:2,name:xyz},{id:2,count:3,name:def},{id:4,count:5,name:ghj}]我尝试了以下进行第一次排序,但在按计数排序后无法使用名称进行排序Collections.sort(list,newCompa

java - 对 String[] 数组的数组列表进行排序

我正在读取一个类似于excel电子表格的.csv文件。有一定数量的列,由文件确定,我使用.split(",")方法将每一行读入字符串数组。然后我将其放入一个数组列表中,这样它就可以容纳所有字符串数组,而无需为其指定特定大小。但是,当我使用Collections.sort()对数组列表进行排序时,程序中断了。可能是什么问题?这是我要排序的代码:Collections.sort(stringList,newComparator(){publicintcompare(String[]strings,String[]otherStrings){return-1*(strings[sortNum

java - Comparator.nullsLast 不会避免 NullPointerException

我想按可为空的字段之一对对象列表进行排序。为了避免NullPointerexception,我使用Comparator.nullsLast。但是还是出现了异常:publicclassTest{publicstaticvoidmain(String[]args){Listl=newArrayList();for(inti=0;i如何对这种列表进行排序? 最佳答案 你应该使用Comparator.nullsLast两次:list.sort(nullsLast(comparing(Bean::getVal,nullsLast(natura

java - Java 中的通配符 Generic 和 <? super T> 意思,下界或上界

所以我在阅读泛型方法时感到很困惑。先说一下这里的问题:在这个例子中:假设我需要一个适用于任何类型T的selectionSort版本,方法是使用调用者提供的外部可比较对象。第一次尝试:publicstaticvoidselectionSort(T[]arr,ComparatormyComparator){....}假设我有:定义车辆类别创建了实现Comparator的VehicleComparator,同时按价格比较车辆。创建卡车扩展车辆实例化卡车[]arr;车辆比较器myComparator现在,我做:selectionSort(arr,myComparator);它不会工作,因为my

java - Comparator.nullsFirst 在两者都为 null 时的工作

我有一个包含多个“可选”(不是java.util.Optional)字段的类。我正在编写一个Lambda比较器,通过比较它们属性的一个子集来测试是否相等我写了privatefinalstaticComparatorCOMPARATOR_491=comparing(MyEntity::getIsin).thenComparing(MyEntity::getTMarketType).thenComparing(nullsFirst(comparing(MyEntity::getIsoCode))).thenComparing(MyEntity::getTaxRate).thenCompar

Java 8 Comparator比较静态函数

Comparator类比较源码publicstatic>Comparatorcomparing(FunctionkeyExtractor){Objects.requireNonNull(keyExtractor);return(Comparator&Serializable)(c1,c2)->keyExtractor.apply(c1).compareTo(keyExtractor.apply(c2));}我了解super之间的区别和extends.我不明白的是为什么这种方法有它们。当参数看起来像这样时,谁能给我一个无法实现的例子FunctionkeyExtractor?例如:Comp

java - 如何使用 Comparable 比较链表中的通用节点?

我正在使用链表实现排序列表。我的节点类看起来像这样publicclassNode{Eelem;Nodenext,previous;}在排序列表类中,我有add方法,我需要根据通用对象的compareTo()方法的实现来比较通用对象,但我得到了这个语法错误“方法compareTo(E)未为类型E定义”。我已经尝试在Node中实现compareTo方法,但是我无法调用任何对象的方法,因为E是泛型类型。这是add(Eelem)方法的未完成主体。publicvoidadd(Eelem){Nodetemp=newNode();temp.elem=elem;if(isEmpty()){temp.n

java - 如何正确使用Java比较器?

如果我有以下类(class):publicclassEmployee{privateintempId;privateStringname;privateintage;publicEmployee(intempId,Stringname,intage){//setvaluesonattributes}//getters&setters}我如何使用按名称、年龄、ID进行比较的比较器? 最佳答案 您需要实现它,以便它按首选元素排序。也就是先按名字比较,如果相等,再按年龄等比较。例子如下:publicclassEmployeeCompara

Java:根据匹配的字符串/模式对数组进行排序

很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visitthehelpcenter.关闭9年前。我需要对一个数组进行排序,其中匹配项出现而其他项下降。例如。我有一个数组:[z,asxdf,abasdf,abcasdf,b,bc,bcd,c]我需要的是当我传递一个关键字假设"b"时,它应该对给定的数组进行排序,其中所有以b..开头的字符串将排在第一位,然后之后休息。这将生成最终输出:[b,bc,bcd,z,c,..(rest).]是否可以在Java中使用比较器?StringkeyWord="b

java - 如何在 junit 测试中测试 Comparator

我需要测试这个方法-compare()。你能得到建议吗?我能做得多好(所有部分如果,否则-如果,否则)。publicclassAbsFigure{classAreaCompareimplementsComparator{@Overridepublicintcompare(FigureGeneraloneFigure,FigureGeneraltwoFigure){doublefirstValue=oneFigure.area();doublesecondValue=twoFigure.area();intresult=0;if(firstValue>secondValue)result