草庐IT

comparer

全部标签

java - 在 Java 中,Collections.sort() 线程中使用的 Comparator 是否安全?

如果我创建了Comparator的单个实例,是否可以跨多个线程使用该实例来使用Collections.sort()对集合进行排序?或者,我是否需要为每次调用Collections.sort()创建一个新的Comparator实例以确保线程安全? 最佳答案 这完全取决于您如何实现Comparator。例如,如果它有实例变量被写入或在比较期间其内容被隐式更改,那么它就不是线程安全的。大多数Comparator实现不做这样的事情,但可能合理发生的一种情况是使用SimpleDateFormat来比较表示日期的字符串。不幸的是,SimpleD

java - compare() 中的空字段怎么办?

在Java中,我使用了一个类,其中某些字段可以为null。例如:classFoo{Stringbar;//....}我想为这个类写一个BarComparator,privatestaticclassBarComparatorimplementsComparator{publicintcompare(finalFooo1,finalFooo2){//Implementationgoeshere}}有没有标准的方法来处理o1,o2,o1.bar,o2.bar可以为null,不用写很多嵌套的if...else?干杯! 最佳答案 我猜你可以

java - compare() 中的空字段怎么办?

在Java中,我使用了一个类,其中某些字段可以为null。例如:classFoo{Stringbar;//....}我想为这个类写一个BarComparator,privatestaticclassBarComparatorimplementsComparator{publicintcompare(finalFooo1,finalFooo2){//Implementationgoeshere}}有没有标准的方法来处理o1,o2,o1.bar,o2.bar可以为null,不用写很多嵌套的if...else?干杯! 最佳答案 我猜你可以

java - compareTo 和 compare 是如何工作的?

我知道compare和compareTo返回一个int值。例如:Returns0ifaequalb-1ifabsort方法调用compareTo或compare()方法。但是sort方法在compare或compareTo返回int值时如何排列list。compare或compareTo返回一个int值进行排序后运行的后台场景是什么?sort方法如何利用int值(-1或0或1)从compare和compareTo 最佳答案 如果被比较的两个元素(a,b)的顺序已经正确,compare(a,b)和a.compareTo(b)两者都返回

java - compareTo 和 compare 是如何工作的?

我知道compare和compareTo返回一个int值。例如:Returns0ifaequalb-1ifabsort方法调用compareTo或compare()方法。但是sort方法在compare或compareTo返回int值时如何排列list。compare或compareTo返回一个int值进行排序后运行的后台场景是什么?sort方法如何利用int值(-1或0或1)从compare和compareTo 最佳答案 如果被比较的两个元素(a,b)的顺序已经正确,compare(a,b)和a.compareTo(b)两者都返回

Java 泛型 : Comparing the class of Object o to <E>

假设我有以下类(class):publicclassTest{publicbooleansameClassAs(Objecto){//TODOhelp!}}如何检查o是否与E相同?Testtest=newTest();test.sameClassAs("astring");//returnstrue;test.sameClassAs(4);//returnsfalse;我无法从(Objecto)更改方法签名,因为我正在覆盖父类(superclass),因此无法选择我的方法签名。我也不想继续尝试强制转换,然后在失败时捕获生成的异常。 最佳答案

Java 泛型 : Comparing the class of Object o to <E>

假设我有以下类(class):publicclassTest{publicbooleansameClassAs(Objecto){//TODOhelp!}}如何检查o是否与E相同?Testtest=newTest();test.sameClassAs("astring");//returnstrue;test.sameClassAs(4);//returnsfalse;我无法从(Objecto)更改方法签名,因为我正在覆盖父类(superclass),因此无法选择我的方法签名。我也不想继续尝试强制转换,然后在失败时捕获生成的异常。 最佳答案

Java入门8(Comparator比较器,HashMap)

comparator比较器​ Comparator不同于Comparable,使用更加的灵活,可以在不同场景下使用比较器,实际开发中,更推荐comparator比较器//新建一个学生类,作为栗子publicclassStudent{privateintsno;privatefloatheight;privatefloatweight;}//单独定义一个比较器类StudentHeightComparator,实现了Comparator接口里面的compare方法publicclassStudentHeightComparatorimplementsComparator{@Overridepubl

java - FunctionalInterface Comparator 有 2 个抽象方法

学习Java8Lambda,只是想知道编译器如何知道Comparator中的哪个方法用于lambda表达式?好像不是SAM接口(interface)?它有2个抽象方法:@FunctionalInterfacepublicinterfaceComparator{intcompare(To1,To2);booleanequals(Objectobj);} 最佳答案 equals()不是抽象方法。这个方法覆盖了Object.equals(Object),并且只有Comparator接口(interface)能够将javadoc附加到方法上

java - FunctionalInterface Comparator 有 2 个抽象方法

学习Java8Lambda,只是想知道编译器如何知道Comparator中的哪个方法用于lambda表达式?好像不是SAM接口(interface)?它有2个抽象方法:@FunctionalInterfacepublicinterfaceComparator{intcompare(To1,To2);booleanequals(Objectobj);} 最佳答案 equals()不是抽象方法。这个方法覆盖了Object.equals(Object),并且只有Comparator接口(interface)能够将javadoc附加到方法上