草庐IT

compare_digest

全部标签

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

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

java - 尖括号内的问号是什么意思 : <? extends java.lang.Comparable>

在AppEngine中,根据theJavaDoc,getTypeRank方法有这个签名:publicstaticintgetTypeRank(java.lang.ClassdatastoreType)在方法签名中,尖括号内有一个问号:这是什么意思? 最佳答案 ?本质上表示一个通配符。表示“可以在此处使用任何扩展java.lang.Comparable(或Comparable本身)的类型”。 关于java-尖括号内的问号是什么意思:,我们在StackOverflow上找到一个类似的问题:

java - Objects.compare() 方法的目的是什么?

Java7引入了Objects类包含“null-安全或null-tolerant”方法,包括compare(T,T,Comparator).但是我什么时候会用Objects.compare(left,right,comparator);简单调用comparator.compare(left,right);?Objects.compare只有null-如果comparator是安全的也是,那么我为什么要包装比较调用呢?首先检查对象身份的优化似乎应该在比较器本身中完成。我能看到的唯一真正的行为差异是comparator.compare(left,right)抛出NullPointerExc

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 6 相当于 Integer.compare

在Java7中我可以使用Integer.compare,但是当我尝试在Java6中使用它时,出现错误:cannotfindsymbolsymbol:methodcompare(int,int)location:classjava.lang.Integer如何在Java6中创建类似的函数? 最佳答案 这在doc中指定:Comparestwointvaluesnumerically.Thevaluereturnedisidenticaltowhatwouldbereturnedby:Integer.valueOf(x).compareT

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 - 如何从 Set 和 Comparator 获取列表

从Set获取List并根据给定的Comparator排序的“好”(为什么?)解决方案是什么? 最佳答案 Setset=newHashSet();//addstuffListlist=newArrayList(set);Collections.sort(list,newMyComparator()); 关于java-如何从Set和Comparator获取列表,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.co

java - java 是否提供内置的静态 String.Compare 方法?

在比较字符串时,我不喜欢依赖实例方法,以免调用该方法的字符串恰好为空。在.NET中,我只使用静态String.Compare(string,string,bool)方法。Java是否提供类似的内置“空安全”字符串比较实用程序,还是我必须实现自己的实用程序? 最佳答案 不,JDK不包含此类实用程序。然而,有几个外部库可以做到这一点。例如org.apache.commons.lang.StringUtils提供空安全的equals(String,String)和equalsIgnoreCase(String,String)。Guava也

java - 推断类型不是 Comparable 泛型类型的有效替代品

考虑代码:publicabstractclassItemimplementsComparable{protectedTitem;publicintcompareTo(To){return0;//thisdoesn'tmatterforthetimebeing}}publicclassMyItemextendsItem{Tobject;}publicclassFoo{protectedArrayListlist;}publicclassBarextendsFoo>{publicvoidsort(){Collections.sort(list);}}排序调用给出错误:Boundmismat

Java 8 Comparator nullsFirst naturalOrder 混淆

这可能是一个简单的问题,但我想清楚地理解它......我有这样的代码:publicfinalclassPersona{privatefinalintid;privatefinalStringnamepublicPersona(finalintid,finalStringname){this.id=id;this.name=name;}publicintgetId(){returnid;}publicStringgetName(){returnname;}@OverridepublicStringtoString(){return"Persona{"+"id="+id+",name="+