草庐IT

comparable

全部标签

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 语法

我正在编写一个方法,该方法将可比较对象列表作为其唯一参数,并且不返回任何内容。我不确定它应该具有的语法:publicstaticvoidmethodName(List>list){//Dosomestuff}我认为这是错误的,因为作为Comparable的类型,这意味着列表可以将Integer和Boolean作为对象,但我不希望那样。我希望列表只采用一种类型,但该类型必须实现Comparable接口(interface)。我该如何实现? 最佳答案 也许让它通用?publicstatic>voidmethodName(Listlist

java - 使用 Collections.sort() 时,它排序并打印哈希码

这个问题在这里已经有了答案:HowdoIprintmyJavaobjectwithoutgetting"SomeType@2f92e0f4"?(13个答案)关闭7年前。我正在处理一个示例,其中它使用ArrayList包含新实例并使用Collections.sort()方法使用可比较的接口(interface)。我不知道为什么它在排序时会打印出哈希码,也不知道我的代码中的错误在哪里。任何人都可以找出错误并详细解释我。SortFruitObject.javaimportjava.util.*;publicclassSortFruitObject{publicstaticvoidmain(S

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 - 如何覆盖 compareTo (Java)

我是编程初学者,我有两个类(class)。第一类是:publicclassUserimplementsComparable带有字段intage,接口(interface)Comparable的构造函数和重写方法:@OverridepublicintcompareTo(Useruser){returnuser.age>=age?-1:0;}二等是publicclassSortUser具有从List中创建Set集合的方法:publicSetsort(Listlist){Setresult=newTreeSet();for(Useruser:list){result.add(user);}r

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 - TreeMap put() 静默删除其他条目?

我遇到了一些非常令人毛骨悚然的TreeMap行为,我在缩小一个小测试用例时遇到了一些麻烦,所以请耐心等待。我想从运行时提供的文件中将大量键值对读入Map中。我正在使用自定义键类。后来,当我去拉回条目时,我发现其中一个或多个丢失了。使用调试器和一些测试用例,我确定缺失的条目在读取阶段肯定会消失,但我不确定是什么原因造成的。基本上:Mapmap=newTreeMap();map.put(key1,value1);//...putanother~500entriesintothemap...assertTrue(map.containsKey(key1));//passesif(!map.c

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泛型,并决定创建一个简单的二进制数组搜索实用程序函数。我正在使用自定义对象和整数对其进行测试。为了获得有关错误和警告的反馈,我使用的是Eclipse。这是我所拥有的:publicstaticintbinarySearch(Comparable[]array,Comparableitem,intstart,intend){if(end0){returnbinarySearch(array,item,mid+1,end);}elseif(item.compareTo(array[mid