草庐IT

comparator

全部标签

java - Java 8 Comparator 中的方法链是如何工作的?

这个问题在这里已经有了答案:VeryconfusedbyJava8Comparatortypeinference(4个答案)关闭4年前。我正在准备Java8证书,下面的内容让我有点困惑,也许有人可以帮我解决这个问题?在示例中,对Squirrel类进行了建模。它有一个名字和一个权重。现在你可以创建一个Comparator类来使用这两个字段对这个东西进行排序。所以首先按名称排序,然后按重量排序。像这样:publicclassChainingComparatorimplementsComparator{publicintcompare(Squirrels1,Squirrels2){Compa

java 8 stream.sorted 集合中的比较器

我有一组要排序(使用比较器),但我不知道该选择哪个版本:版本1:publicstaticvoidsort(Setusers){users=users.stream().sorted(sort_gender.thenComparing(sort_age)).collect(Collectors.toCollection(LinkedHashSet::new));}版本2:publicstaticSetsort(Setusers){returnusers.stream().sorted(sort_gender.thenComparing(sort_age)).collect(Collect

Java Collections.sort - 帮助我删除未经检查的警告

Listquestions=newArrayList();questions.addAll(getAllQuestions());//returnsasetofQuestionsCollections.sort(questions,newBeanComparator("questionId"));//org.apache.commons.beanutils.BeanComparator在Java1.5下,除了'newBeanComparator("questionId")'生成一个未经检查的警告之外,上面的代码工作正常。我不喜欢警告。有什么方法可以为BeanComparator提供类型

java - 比较器 comparingInt

这个问题在这里已经有了答案:Generictypeinferencenotworkingwithmethodchaining?(2个答案)关闭6年前。我需要对点列表进行排序。首先我需要比较x值,然后如果x值相等,则比较y值。所以我想我会使用thenComparing方法:Comparatorcmp=Comparator.comparingInt(p->p.x).thenComparingInt(p->p.y);但我不断收到消息:不兼容的类型:Comparator无法转换为Comparator。我可以通过其他方式进行这种比较,并且它有效,但我不明白我在这里做错了什么。

java - Comparator.comparing(...) 在采用 String::compareTo 时抛出非静态引用异常

下面是我的代码片段的两行:ListlistDevs=Arrays.asList("alvin","Alchemist","brutus","larsen","jason","Kevin");listDevs.sort(Comparator.comparing(String::length));//ThisworksfinelistDevs.sort(String::compareToIgnoreCase);//Thisworksfine但是(出于经验)当我尝试写listDevs.sort(Comparator.comparing(String::compareToIgnoreCase)

Java Sorting : sort an array of objects by property, 对象不允许使用 Comparable

我有一个类Library,它包含一个Book对象数组,我需要根据Book的属性(Title或PageNumber)对该数组进行排序。问题是我不允许将Comparable类与Book一起使用。您建议我如何对图书馆中的书籍数组进行排序?写我自己的排序?或者有更简单的方法吗?如果您需要代码片段,尽管询问! 最佳答案 您可以提供一个Comparator来比较您想要的任何类型,Comparable或其他。对于你使用的数组和集合Arrays.sort(array,myComparator);Collections.sort(list,myCom

java - 为什么 TreeSet<E> 的构造函数接受 E 的参数 super 而不是 E 的 extend

我正在阅读java源代码,发现如下内容:http://www.java2s.com/Code/JavaAPI/java.util/newTreeSetEComparatorsuperEc.htm不明白为什么这个构造函数的参数是.我的理解应该是而不是因为如果E是可比较的,则E的child必须是可比较的,而E的parent可能不是。 最佳答案 让我们考虑三个类:Drink,JuiceextendsDrink,和OrangeJuiceextendsJuice.如果我想要一个TreeSet,我需要一个比较器来比较任何两种果汁。当然是Comp

java - Long 类型未定义方法 compare(long, long)

我需要制作一个Comparator来根据它的long类型的变量之一对我的对象列表进行排序。publicclassParticipantIndexComparatorimplementsComparator{finalListparticipants;publicParticipantIndexComparator(ArrayListnumbersToSort){participants=newArrayList();for(inti=0;i但是returnLong.compare(l1,l2);无效-“方法compare(long,long)未定义Long类型”。看来我做错了。

java - Comparator<String> 必须覆盖父类(super class)方法

我正在制作TreeMap并希望以降序排列。我创建了以下比较器:Comparatordescender=newComparator(){@Overridepublicintcompare(Stringo1,Stringo2){returno2.compareTo(o1);}};我像这样构建TreeMap:myMap=newTreeMap(descender);但是,我收到以下错误:Themethodcompare(String,String)oftypenewComparator(){}mustoverrideasuperclassmethod我从来没有完全理解泛型,我做错了什么?

java - 涉及返回类型、通配符和交集类型的类型推断

我正在尝试声明一个接口(interface),该接口(interface)包含一个方法,该方法将返回实现Comparator的事物列表。和Action,即&Action>ListgetThings();编译正常,但当我尝试调用此方法时出现问题。我希望能够做到这一点:Listthings=getThings();List>things=getThings();当我尝试这样做时,出现以下编译错误:incompatibletypes;noinstance(s)oftypevariable(s)Texistsothatjava.util.Listconformstojava.util.List