Java 类中的多个比较器
我被一个我找不到好答案的问题难住了。我找到了 ,但它是不完整的: 这应该行得通,但我不知道比较部分是如何工作的。这是我的班级:Java 类中的多个比较器,java,comparator,Java,Comparator,我被一个我找不到好答案的问题难住了。我找到了 ,但它是不完整的: 这应该行得通,但我不知道比较部分是如何工作的。这是我的班级: package ZVCVolkel_Logic; import java.util.Comparator; public class Vliegtuig implements Comparator<Vliegtuig>{ private String naam; private String type; private Stri
package ZVCVolkel_Logic;
import java.util.Comparator;
public class Vliegtuig implements Comparator<Vliegtuig>{
private String naam;
private String type;
private String status;
private Hangaar hangaar;
public Vliegtuig(String naam, String type, String status, Hangaar hangaar){
this.naam = naam;
this.type = type;
this.status = status;
this.hangaar = hangaar;
}
}
现在我需要一个状态和Hangaar.getName的比较器。有人能帮忙吗
这不是一个,他只有一个比较。我也可以做到这一点,但不能在一个类中使用两个不同的对象。comparator接口有一个方法compare返回一个int值来确定两个对象之间的关系 它将返回: 作为第一个参数的负整数、零或正整数小于、等于或大于第二个参数
在比较器实现中,需要比较两个对象。例如,您可以参考大多数JDK类,例如java.lang.Integer 在您的情况下,解决方案是使用来自以下对象的嵌入式压缩程序:
Comparator<Vliegtuig> nameComparator = new Comparator<>() {
@Override
public int compare(Vliegtuig o1, Vliegtuig o2) {
return o1.getName().compareTo(o2.getName());
}
}
您不需要通过Vliegtuig扩展Comparator。问题是?您读过文档了吗?比较定义得很好。我怎样才能为status和Hangaar.getname创建一个比较器呢?另外,您的类Vliegtuig可能应该实现Comparable而不是Comparator@Code-学徒我不认为这能解决OP的问题OP需要两个比较器,而不是一个比较器。所以我得到了一个Vliegtuigs“vliegtuigen”列表。是吗?;Collections.sortvliegtuigen,hangaarNameComparator?使用“hangaarNameComparator”显示代码。我猜你说的不对@MrEmper不知道如何应用这个,但它确实让我的错误更清楚了
static Comparator<Vliegtuig> hangaarNameComparator() {
return new Comparator<Vliegtuig>(){
public int compare(Vliegtuig one, Vliegtuig two) {
return one.getHangaar().getName().compareTo(two.getHangaar().getName());
}
}
}
Comparator<Vliegtuig> hangaarNameComparator = Comparator.comparing(Vliegtuig::getHagaar,
Comparator.comparing(Hagaar::getName));
Comparator<Vliegtuig> nameComparator = new Comparator<>() {
@Override
public int compare(Vliegtuig o1, Vliegtuig o2) {
return o1.getName().compareTo(o2.getName());
}
}