jjzjj

Comparator

全部标签

swift - 无法在 Swift 的数组扩展方法中创建默认闭包参数

作为学习Swift的练习,我尝试在Array上创建最小和最大扩展方法。使用名为comparest的共享方法.一切都经过测试并且运行良好,除了一件事:我无法使用minimum没有参数的函数。我已将默认参数值指定为nil,但当我调用minimum时,Apple的Swift编译器不喜欢它没有这个参数。这是我的方法定义。他们编译得很好。extensionArray{funccomparest(comparator:T->C,_op:(C,C)->Bool)->T?{varmin=self.firstforeleminself{ifop(comparator(elem),comparator(m

java - 为什么 PriorityQueue.toString 返回错误的元素顺序?

这个问题在这里已经有了答案:Thebuilt-initeratorforjava'sPriorityQueuedoesnottraversethedatastructureinanyparticularorder.Why?(5个答案)关闭11个月前。我正在尝试在java中使用优先级频率最低的节点创建一个优先级队列。但是,我的比较器不工作,输出很奇怪。我相信我需要更改我的比较器,但我不确定如何更改它。这是我的代码:publicclassHuffmanComparatorimplementsComparator{publicintcompare(TreeNodeHuffmanp1,Tree

java - 在 Java 中按属性值对对象 ArrayList 进行排序

我有ArrayListzombie,其中填充了一个名为Zombie的对象。Zombie具有属性health、x、y。我如何使用Zombie的属性x按升序对数组进行排序,该属性最初设置为具有随机值?我已经找到了可能的solution我的问题,但我不明白答案的语法。解释该答案也可能有所帮助。 最佳答案 您想使用Collections.sort结合定制Comparator.Collections.sort(list,newComparator(){@Overridepublicintcompare(Zombiez1,Zombiez2){i

java - Android - 是否可以使用 Comparator.comparing 而不是 API < 24 上的自定义比较器对列表进行排序?

我正在开发的应用程序中有一个RecyclerView,我可以用它填充各种项目和搜索/过滤/排序/等等。目前致力于排序。我有多个可以排序的标准,可以从下拉微调器中选择。数据对象中排序的值包括字符串、整数和枚举,所有这些都非常容易排序。然而,虽然一些排序选项只需要一个标准,但有些需要二级或三级标准(在极少数情况下最多需要4个)。为了有效地使用Collections.sort(List,Comparator),我必须编写大量的自定义比较器,所以我希望有一些方法可以避免这种情况。事实证明,Java8有一个很棒的解决方案:Comparator.comparing(...),它会为您生成比较器,并

java - 为什么通用类型参数说 "extends"Comparable 而不是 "implements"?

这个问题在这里已经有了答案:Whyis"extendsT"allowedbutnot"implementsT"?(9个回答)关闭3年前。我尝试编写从数组中删除重复元素的通用函数。publicstatic>ArrayListremoveDuplicate(E[]arr){//doquicksortArrays.sort(arr);ArrayListlist=newArrayList();inti;for(i=0;i如您所见,您不能传递像int[]数组这样的原始类型,因为我正在通过Comparable接口(interface)中定义的compareTo()方法比较元素。我注意到第一行(方法

Java 8 - 基于特定顺序的自定义排序

我想根据用户状态对用户列表进行排序,但顺序必须基于我设置的顺序。我想设置列表的顺序,顺序应该是1,0,5。我们还应该牢记订购用户名。Listusers=newArrayList();users.add(newUser("A",1));users.add(newUser("B",5));users.add(newUser("C",0));users.add(newUser("D",1));users.add(newUser("E",5));users.add(newUser("F",0));这是用户类publicclassUser{privateStringusername;privat

java - 在比较器接口(interface)中使用 equals() 方法?

equals()方法可用于Object类中的所有java集合类。Comparator接口(interface)中也声明了这个方法,那么在Comparator中声明这个方法的目的是什么?在什么情况下使用它以及如何使用它? 最佳答案 whatisthepurposeofdeclaringthismethodinComparator?我认为这是设计者强调Comparator.equals()强加一些additionalrequirements事实的方式。在任何实现该接口(interface)的类上:Additionally,thismet

java - 使用 Comparators 帮助比较 float 成员变量

我能够很好地比较字符串,但想知道如何对float进行排序?getChange()返回一个字符串。我希望能够降序排序。我该怎么做?更新:packageorg.stocktwits.helper;importjava.util.Comparator;importorg.stocktwits.model.Quote;publicclassChangeComparatorimplementsComparator{publicintcompare(Quoteo1,Quoteo2){floatchange1=Float.valueOf(o1.getChange());floatchange2=Fl

java - scala中的Covariant Typeparameter需要在java接口(interface)中不变

我有一个看起来像这样的特征(一些进一步的信息可以在thisrelatedquestionbymyself找到,虽然我不认为,这个问题需要它)traitExtractor[-A,+B]{defextract(d:A):B//lotsofotherthings}要在现有的java框架中使用它,我希望这个Extractor有一个返回Comparator[B]的函数(即java.util.Comparator),甚至更好地扩展Comparator[A]。现在这带来了一个问题,因为Comparator的类型参数应该是不变的,而A是逆变的而B是协变的。所以我得到这样的错误:scala>import

java - 比较器应该每次都实例化还是只实例化一次?

对于自定义比较器,每次都实例化它而不是将其创建为常量(使用匿名类)并使用单个实例是否有任何优势?我一直认为每次都创建一个新实例没有任何优势,并且一直采用选项#2(静态最终字段中的单个实例)。publicclassSomeClass{//Firstoption:privatestaticclassSomeCustomComparatorimplementsComparator{publicintcompare(SomeObjecto1,SomeObjecto2){/*implementation*/}}//Secondoption:privatestaticfinalComparator