gpt4 book ai didi

java - 如何重写 HashSet 的 getValueAt ?

转载 作者:行者123 更新时间:2023-12-01 18:06:35 24 4
gpt4 key购买 nike

我需要扩展 AbstractTableModel 来表示表中的一些数据。我有一个类 Car ,它应该代表表中的一项(行):

public class Car implements Comparable<Car> {
public String make;
public int year;
public double engineVol;
public double maxSpeed;

// ...getters/setters for the fields...


public Car (String make, int year, double engineVol, double maxSpeed) {
this.make = make;
this.year = year;
this.engineVol = engineVol;
this.maxSpeed = maxSpeed;

}

@Override
public boolean equals(Object other) {
if (this == other) return true;
if (other == null || getClass() != other.getClass()) return false;

Car car = (Car) other;

if (year != car.year) return false;
if (Double.compare(car.engineVol, engineVol) != 0) return false;
if (Double.compare(car.maxSpeed, maxSpeed) != 0) return false;
return make.equals(car.make);
}

@Override
public int hashCode() {
int result;
long temp;
result = make.hashCode();
result = 31 * result + year;
temp = Double.doubleToLongBits(engineVol);
result = 31 * result + (int) (temp ^ (temp >>> 32));
temp = Double.doubleToLongBits(maxSpeed);
result = 31 * result + (int) (temp ^ (temp >>> 32));
return result;
}

@Override
public int compareTo(Car other) {
return this.make.compareTo(other.make);
}
}

这些Car对象存储在HashSet中,该HashSet驻留在CarTableModel中:

public class CarTableModel extends AbstractTableModel {
private static final long serialVersionUID = 7927259757559420606L;
private HashSet<Car> cars;

public CarTableModel(HashSet<Car> cars) {
this.cars = cars;
}

@Override
public int getRowCount() {
return cars.size();
}

@Override
public int getColumnCount() {
return 4;
}

@Override
public Object getValueAt(int rowIndex, int columnIndex) {
return null;
}
}

据我所知,我需要重写 AbstractTableModel 中至少 3 个方法。如何覆盖 HashSet 的 getValueAt?与 HashSet 相关的 rowIndex 和 columnIndex 参数是什么?如果我们无法通过索引从 1 获取值,那么如何将这些索引应用于 HashSet?这可能吗?

附注在这里使用 HashSet 并不是我的任性,这是一项大学作业,所以它必须走这条路。

最佳答案

How do I override getValueAt for a HashSet?

不要使用哈希集。您通常会使用 ArrayList,以便按照将行添加到列表的顺序来定义行。

例如查看Table Row Model它逐步完成创建自定义模型的过程。如果您愿意,它还提供了一个通用的 TableModel 以使过程更简单。

It's not my caprice to use a HashSet here, it's a university assignment, so it has to go this way.

错过了该评论。我不知道为什么需要使用 HashSet,因为没有直接的方法来访问数据。所以在我看来,每次需要一行时,您都需要遍历集合。效率不太高。

关于java - 如何重写 HashSet 的 getValueAt ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35974711/

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