从Set获取List并根据给定的Comparator排序的“好”(为什么?)解决方案是什么? 最佳答案 Setset=newHashSet();//addstuffListlist=newArrayList(set);Collections.sort(list,newMyComparator()); 关于java-如何从Set和Comparator获取列表,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.co
我是Java的新手,我不太了解如何使用比较器接口(interface)。我在Inventory类和Item类中有一个包含Item的ArrayList。在Item类中我写了:publicclassItemimplementsComparator{//stuff...@Overridepublicintcompare(Itema,Itemb){if(a.getID().compareToIgnoreCase(b.getID())>0)return1;elseif(a.getID().compareToIgnoreCase(b.getID())getID()方法只提供id,我必须使用它来按字
我有一个像下面这样的枚举类:publicenumLetter{OMEGA_LETTER("Omega"),GAMMA_LETTER("Gamma"),BETA_LETTER("Beta"),ALPHA_LETTER("Alpha"),privatefinalStringdescription;Letter(){description=toString();}Letter(Stringdescription){this.description=description;}publicStringgetDescription(){returndescription;}}稍后在我的代码中,我基
这可能是一个简单的问题,但我想清楚地理解它......我有这样的代码:publicfinalclassPersona{privatefinalintid;privatefinalStringnamepublicPersona(finalintid,finalStringname){this.id=id;this.name=name;}publicintgetId(){returnid;}publicStringgetName(){returnname;}@OverridepublicStringtoString(){return"Persona{"+"id="+id+",name="+
我有一个Photo对象:publicclassPhoto{@IdprivateStringid;privateLocalDateTimecreated;privateIntegerpoNumber;}对于一组照片或一组中的所有照片,poNumber可以为空。我想根据poNumber对一组照片进行排序,让最低的poNumber出现在排序后的集合中。poNumber也可以在集合中重复。如果poNumber重复,则根据创建的顺序排序(最早创建的照片首先出现)。如果poNumber为null,则根据创建的排序。我尝试了下面的代码:SetorderedPhotos=newTreeSet(Comp
考虑一个简单的类:classEmployee{Stringname;intsal;....//gettersandsetters}例如,我可以创建一个比较器来对字段名称进行排序。classEmpSortByNameimplementsComparator{@Overridepublicintcompare(Employeee1,Employeee2){returne1.getName().compareTo(e2.getName());}}但是,查看apachecommonsBeanComparator,排序可以通过以下方式实现:BeanComparatorbc=newBeanComp
我一直在尝试使用lambda表达式在Java8中创建Map.EntryComparator并且发现了一个非常奇怪的行为。Mapmap=newTreeMap();map.put(1,"Hello");map.put(3,"zzzz");map.put(2,"aaaa");map.put(5,"AAAAA");map.put(4,"aaaa");Comparator>com=Comparator.comparing(Map.Entry::getValue);com=com.reversed();Comparator>com2=Comparator.comparing(Map.Entry::
Parent是Child继承的类。由GrandChild继承。每个类都包含子类的列表(即父类包含子类列表,子类包含孙子类列表)。每个类包含50个属性(attrib1-atrib50)。getChildList()返回Child类型对象的arrayListgetGrandChildList()返回GrandChild类型对象的arrayList设resultSet为Parent列表ListresultSet现在我想根据一些属性对列表进行排序。例如,如果我想根据两个父属性(比如属性1和属性2)对结果集进行排序,我使用此代码。ComparatorbyFirst=(e1,e2)->e2.get
在Java’sdocumentationforitsclassTreeSet其中一个构造函数显示为具有以下header:TreeSet(Comparatorc)有人可以帮助解释为什么TreeSet有一个构造函数,它以比较器对象作为参数吗?我不知道为什么要这样做。 最佳答案 以上所有答案都是正确的,但我想补充一点,自定义比较器除了会产生不同的排序外,还会以不同的方式过滤值。由于Set的值是单义的,如果自定义Comparator返回两个值相同,则只有其中一个会出现在Set中:Sets=newTreeSet(newComparator()
我想对seq1升序排序,seq2降序排序,所以我这样做:list=list.stream().sorted(comparing(AClass::getSeq1).thenComparing(AClass::getSeq2).reversed()).collect(toList());但是结果出来了,因为seq1和seq2都是降序排列的。我可以这样做来使seq1升序和seq2降序:sorted(comparing(AClass::getSeq1).reversed().thenComparing(AClass::getSeq2).reversed()真正正确的方法是什么?