Java 与比较不同

Java 与比较不同,java,comparison,comparator,compareto,Java,Comparison,Comparator,Compareto,每次我都试图根据情况做不同的比较。 例如: 我有一个名为Line的类,在这个类中有字符串名、int id和int扩展名 我希望能够通过名称、id或扩展名来比较两个不同的线条对象。如果您有两个不同的比较方案,您可能需要两个不同的方案(或一个可以配置的方案,例如,通过构造函数参数来比较) 公共类LineNameComparator实现Comparator{ @凌驾 公共整数比较(a行,b行){ 返回a.getName().compareTo(b.getName()); } } 公共类LineIdCo

每次我都试图根据情况做不同的比较。 例如: 我有一个名为Line的类,在这个类中有字符串名、int id和int扩展名
我希望能够通过名称、id或扩展名来比较两个不同的线条对象。

如果您有两个不同的比较方案,您可能需要两个不同的方案(或一个可以配置的方案,例如,通过构造函数参数来比较)

公共类LineNameComparator实现Comparator{
@凌驾
公共整数比较(a行,b行){
返回a.getName().compareTo(b.getName());
}
}
公共类LineIdComparator实现了Comparator{
@凌驾
公共整数比较(a行,b行){
返回a.getIf().compareTo(b.getId());
}
}
公共类LineExtensionComparator实现Comparator{
@凌驾
公共整数比较(a行,b行){
返回a.getExtension().compareTo(b.getExtension());
}
}
。。。然后根据您的需要使用:

List<Line> list = ...

// Sort by name:
Collections.sort(list, new LineNameComparator());


// Sort by ID:
Collections.sort(list, new LineIdComparator());


// Sort by extension:
Collections.sort(list, new LineExtensionComparator());
List=。。。
//按名称排序:
排序(list,newlineNameComparator());
//按ID排序:
Collections.sort(list,newlineidcomparator());
//按扩展名排序:
sort(list,newlineextensioncompactor());

这实际上是一个很好的问题,尽管他们没有提供他们尝试过的代码(因为如果你不知道的话,没有太多可以尝试)。这很好,但我需要使用compareTo,这是必需的。我们是否可以像上面那样构建helper compare方法,然后在compareTo中随机生成一个数字,作为哪个comparator的选择?不清楚程序员是否需要能够选择使用哪种比较(尽管我意识到这听起来有点倒退)。不,它不应该是随机的。用户会问如何比较。我想我已经弄明白了,但我还在测试。
List<Line> list = ...

// Sort by name:
Collections.sort(list, new LineNameComparator());


// Sort by ID:
Collections.sort(list, new LineIdComparator());


// Sort by extension:
Collections.sort(list, new LineExtensionComparator());