我想创建一个整数(或其他类型)的 XY 数组,但我想要使用类似于 ArrayList 类中的 "add"、"remove"、"contains"、"indexOf" 等方法。
是否存在具有这些功能的现有类?
PS:我不想创建一个 ArrayList 的 ArrayList。
是否存在具有这些功能的现有类?
PS:我不想创建一个 ArrayList 的 ArrayList。
class BiDimensionalArray<T>{
Object[][] backupArray;
int lengthX;
int lengthY;
public BiDimensionalArray(int lengthX, int lengthY) {
backupArray = new Object[lengthX][lengthY];
this.lengthX = lengthX;
this.lengthY = lengthY;
}
public void set(int x, int y, T value){
backupArray[x][y] = value;
}
public T get(int x, int y){
return (T) backupArray[x][y];
}
public void addX(T[] valuesY) {
Object[][] newArray = new Object[lengthX+1][lengthY];
System.arraycopy(backupArray, 0, newArray, 0, lengthX);
newArray[lengthX]=valuesY;
backupArray = newArray;
lengthX = lengthX+1;
}
}
注意:Typeparameter在内部没有使用,因为没有 new T[][]
这样的东西。
编辑
添加了addX方法以进行演示
修复编译错误
标准的Java库中没有原生的矩阵类型。尽管如此,创建一个矩阵相当容易。这些方法很容易实现,并且可以使用数组、List
或其他方式进行支持。
public class Matrix<T> {
private final List<T> values;
private final int rows;
public Matrix(int x, int y) {
this.rows = x;
values = new ArrayList<T>(x * y);
]
public int get(int x, int y) {
return values.get(x * rows + y);
}
public boolean contains(T t) {
return values.contains(t);
}
// etc
}
remove
函数有什么期望?(你想要检查一下参数吗?) - Tom Hawtin - tacklineMatrix.remove
。首先,它只删除第一个匹配项,这意味着您依赖于实现布局。其次,它以最不像矩阵的方式向上移动剩余条目,并导致 get
抛出奇怪的异常。 - Tom Hawtin - tackline