gpt4 book ai didi

java - 如何使用不同的比较器创建两个通用结构实例?

转载 作者:行者123 更新时间:2023-11-30 07:05:46 24 4
gpt4 key购买 nike

我正在使用 Java 中的泛型制作一个抽象的 AVL 树实现。我需要有多个具有相同数据实例但具有不同键的树实例。例如:让我们考虑数据类 Car。我需要它的实例同时在两棵树中。但是第一棵树将按车牌排序,第二棵树将按 VIN 号排序。如何确保?

最佳答案

由于您的抽象树实现是建立在泛型之上的,您可以将比较器传递给您的 avl 树构造函数,这样您就知道如何根据比较器在树中保持顺序。

class Tree<T> {

private final Comparator<T> comparator;


public Tree(final Comparator<T> comparator) {
this.comparator = comparator;
}
}

class Car {
private String model;
private String VIN;
private String licencePlate;


public String getModel() {
return this.model;
}


public String getVIN() {
return this.VIN;
}


public String getLicencePlate() {
return this.licencePlate;
}

}


public static void main(final String[] args) {

Comparator<Car> comp1 = new Comparator<Car>() {

@Override
public int compare(final Car car1, final Car car2) {
return car1.getVIN().compareTo(car2.getVIN());
}
};

Comparator<Car> comp2 = new Comparator<Car>() {

@Override
public int compare(final Car car1, final Car car2) {
return car1.getLicencePlate().compareTo(car2.getLicencePlate());
}
};

Tree<Car> tree1 = new Tree<Car>(comp1); //this tree will keep order according to car's VIN
Tree<Car> tree2 = new Tree<Car>(comp2); // this tree will keep order according to car's licence plate


}

关于java - 如何使用不同的比较器创建两个通用结构实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26354810/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com