有什么方法(方法、lambda或优雅的构造)可以根据给定的比较器在列表中查找元素?我写了一个这样的方法:privatestaticbooleancontains(Listlist,Titem,Comparatorcomparator){returnlist.stream().anyMatch(listItem->comparator.compare(listItem,item)==0);}但我希望用更优雅的东西替换它。我不想添加任何依赖项,所以没有Guava、“commons”等。我真的在寻找一种在Java8中执行此操作的漂亮方法。编辑:一些我认为更优雅的例子(这里是使用代码)://s
我正在寻找排序的方法Map按值(value)观。我找到了thispost,它解决了我的排序问题,但不完全是。根据帖子,我写了以下代码:importjava.util.*;publicclassSort{staticclassValueComparatorimplementsComparator{Mapbase;ValueComparator(Mapbase){this.base=base;}@Overridepublicintcompare(Stringa,Stringb){if(base.get(a)>=base.get(b)){return1;}else{return-1;}}}p
我有一个未分类项目流和一个比较器流。我想通过使用“thenComparing”(Multisort)将所有比较器应用到流中是否有比以下代码更优雅的方法来实现此目的?Streamunsorted=...;Streamcomparators=...;ComparatorcompareFunc=comparators.reduce(null,(a,b)->{if(a==null){returnb;}else{returna.thenComparing(b);}});Streamresult=unsorted.sorted(compareFunc); 最佳答案
假设,我有一个未排序的重叠范围数组。每个range只是一对整数begin和end。现在我想查找给定的key是否至少属于ranges之一。可能,我还必须知道它所属的范围。我们可以假设ranges数组占用~1M并适合内存。我正在寻找一种简单的算法,它仅使用标准JDK集合,不使用任何3d方库和特殊数据结构,但运行速度相当快。你有什么建议? 最佳答案 按自定义Comparator对范围进行数字排序,然后为每个键k构建一个单元素范围[k,k]并执行binarysearch对于此范围,使用不同的Comparator.Comparator用于搜索
这个问题在这里已经有了答案:VeryconfusedbyJava8Comparatortypeinference(4个答案)关闭4年前。我正在准备Java8证书,下面的内容让我有点困惑,也许有人可以帮我解决这个问题?在示例中,对Squirrel类进行了建模。它有一个名字和一个权重。现在你可以创建一个Comparator类来使用这两个字段对这个东西进行排序。所以首先按名称排序,然后按重量排序。像这样:publicclassChainingComparatorimplementsComparator{publicintcompare(Squirrels1,Squirrels2){Compa
我有一组要排序(使用比较器),但我不知道该选择哪个版本:版本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
Listquestions=newArrayList();questions.addAll(getAllQuestions());//returnsasetofQuestionsCollections.sort(questions,newBeanComparator("questionId"));//org.apache.commons.beanutils.BeanComparator在Java1.5下,除了'newBeanComparator("questionId")'生成一个未经检查的警告之外,上面的代码工作正常。我不喜欢警告。有什么方法可以为BeanComparator提供类型
这个问题在这里已经有了答案:Generictypeinferencenotworkingwithmethodchaining?(2个答案)关闭6年前。我需要对点列表进行排序。首先我需要比较x值,然后如果x值相等,则比较y值。所以我想我会使用thenComparing方法:Comparatorcmp=Comparator.comparingInt(p->p.x).thenComparingInt(p->p.y);但我不断收到消息:不兼容的类型:Comparator无法转换为Comparator。我可以通过其他方式进行这种比较,并且它有效,但我不明白我在这里做错了什么。
下面是我的代码片段的两行: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源代码,发现如下内容:http://www.java2s.com/Code/JavaAPI/java.util/newTreeSetEComparatorsuperEc.htm不明白为什么这个构造函数的参数是.我的理解应该是而不是因为如果E是可比较的,则E的child必须是可比较的,而E的parent可能不是。 最佳答案 让我们考虑三个类:Drink,JuiceextendsDrink,和OrangeJuiceextendsJuice.如果我想要一个TreeSet,我需要一个比较器来比较任何两种果汁。当然是Comp