标签: comparable

139
推荐指数
2
解决办法
17万
查看次数

什么时候课程应该是可比较的和/或比较者?

我见过同时实现ComparableComparator的类.这是什么意思?为什么我会使用一个而不是另一个?

java comparable comparator

134
推荐指数
8
解决办法
22万
查看次数

为什么java.lang.Number没有实现Comparable?

有谁知道为什么 java.lang.Number不实施Comparable?这意味着你无法排序Numbers的Collections.sort这对我来说有点陌生.

发布讨论更新:

感谢所有有用的回复.我最后对这个话题进行了更多的研究.

java.lang.Number未实现Comparable的原因的最简单解释源于可变性问题.

对于位的检讨,java.lang.Number是抽象的超类型的AtomicInteger,AtomicLong,BigDecimal,BigInteger,Byte,Double,Float,Integer,LongShort.在那个列表上,AtomicIntegerAtomicLong没有实现Comparable.

四处搜索,我发现Comparable在可变类型上实现这不是一个好习惯,因为对象在比较期间或之后可能会发生变化,因此比较结果无用.这两个AtomicLongAtomicInteger是可变的.API设计者已经预见到没有Number实现,Comparable因为它会限制未来子类型的实现.确实,AtomicLong并且AtomicIntegerjava.lang.Number最初实现之后很久就被添加到Java 1.5中.

除了可变性之外,这里也可能有其他考虑因素.一compareTo实施Number就必须促进所有的数字值BigDecimal,因为它是能够容纳所有的Number子类型.这种促销在数学和表现方面的含义对我来说有点不清楚,但我的直觉发现了解决方案.

java sorting comparable

132
推荐指数
4
解决办法
3万
查看次数

何时使用Comparable和Comparator

我有一个对象列表,我需要在一个字段上排序,比如分数.在没有多想的情况下,我编写了一个实现Comparator的新类,它可以执行任务并且可以正常运行.

现在回过头来看,我想知道我是否应该让我的类实现Comparable,而不是创建一个实现Comparator的新类.分数是对象将被订购的唯一字段.

  1. 我做过什么可以接受的做法?

  2. 是正确的方法"首先让类实现Comparable(对于自然顺序),如果需要替代字段比较,那么创建一个实现Comparator的新类"?

  3. 如果上面的(2)为真,那么它是否意味着只有在具有类实现Comparable之后才应该实现Comparator?(假设我拥有原始课程).

java comparable comparator

106
推荐指数
10
解决办法
11万
查看次数

如何实现Java可比接口?

我不确定如何在我的抽象类中实现类似的接口.我有以下示例代码,我正在尝试并解决它:

public class Animal{
    public String name;
    public int yearDiscovered;
    public String population;

    public Animal(String name, int yearDiscovered, String population){
        this.name = name;
        this.yearDiscovered = yearDiscovered;
        this.population = population; }

    public String toString(){
        String s = "Animal name: "+ name+"\nYear Discovered: "+yearDiscovered+"\nPopulation: "+population;
        return s;
    }
}
Run Code Online (Sandbox Code Playgroud)

我有一个测试类,它将创建Animal类型的对象,但是我希望在这个类中有一个类似的接口,以便旧年的发现排名高于低.我不知道如何解决这个问题.

java comparable

96
推荐指数
3
解决办法
24万
查看次数

为什么compareTo在Java上的Enum final?

Java中的枚举实现了Comparable接口.这本来是很好的覆盖ComparablecompareTo方法,但在这里它被标记为最终.Enum's 的默认自然顺序compareTo是列出的顺序.

有谁知道为什么Java枚举有这个限制?

java enums compareto comparable

87
推荐指数
3
解决办法
6万
查看次数

如何基于/比较Kotlin中的多个值进行排序?

假设我有一个class Foo(val a: String, val b: Int, val c: Date),我想Foo根据所有三个属性对s 列表进行排序.我该怎么做?

comparable kotlin

68
推荐指数
1
解决办法
2万
查看次数

67
推荐指数
4
解决办法
15万
查看次数

比较两个通用数字的值

我想比较两种类型的变量T extends Number.现在我想知道这两个变量中哪一个大于另一个或相等.不幸的是我还不知道确切的类型,我只知道它将是一个子类型java.lang.Number.我怎样才能做到这一点?

编辑:我试图用另一种解决方法TreeSets,这实际上自然排序工作(当然它的工作原理,所有的子类Number实现Comparable除的AtomicInteger和AtomicLong的).因此,我将丢失重复值.使用Lists时,Collection.sort()由于绑定不匹配,不接受我的列表.非常不满意.

java generics numbers comparable

55
推荐指数
5
解决办法
4万
查看次数

标准API中是否存在自然比较器?

我需要一个比较器作为策略模式的一部分,可以使用对象的自然顺序或一些自定义顺序.对于自然排序的情况,我写了一个简单的比较器:

private static class NaturalComparator<T extends Comparable<? super T>> implements Comparator<T> {
    @Override
    public int compare(T o1, T o2) {
        return o1.compareTo(o2);
    }
}
Run Code Online (Sandbox Code Playgroud)

看起来很简单,但我想知道是否有人知道标准API中的一个.我查看了TreeMap,它没有这样的类,所以当编写代码时,明显的答案是否定的,但也许稍后会添加.

java comparable comparator

54
推荐指数
3
解决办法
3万
查看次数

标签 统计

comparable ×10

java ×9

comparator ×4

compareto ×1

enums ×1

generics ×1

kotlin ×1

numbers ×1

sorting ×1