草庐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 - 如何正确使用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

java - 将特定项目移动到列表末尾

我在Java中有一个ArrayList:{"deleteItem","createitem","exportitem","deleteItems","createItems"}我想将所有包含delete的字符串移动到列表的末尾,这样我会得到下一个:{"createitem","exportitem","createItems","deleteItem","deleteItems"}`我可以创建两个子列表-一个用于包含“删除”单词的单词,一个用于其他单词,然后合并它们,但我正在寻找一种更有效的方法。 最佳答案 使用自定义比较器:Lis