gpt4 book ai didi

java - Java可以使用用户定义的对象作为二维数组键的索引吗?

转载 作者:行者123 更新时间:2023-12-02 06:16:10 25 4
gpt4 key购买 nike

array[obj][obj] = 1;

我想创建一个二维数组,其索引是用户定义的对象。这个怎么做?或者还有其他一些数据结构可以做到这一点?

最佳答案

没有Java Language Specification声明只能使用 int 访问数组。尽管由于原始类型提升,可以使用 shortcharbyte,并且它们会自动转换为 int.

要解决您的问题:您可以在对象中存储 int 索引,然后使用它来访问数组。

array[obj.getIndex()][obj.getIndex()] = 1;

如果您无法直接影响用户定义对象的代码,请强制用户实现需要 getIndex() 方法的接口(interface)

interface ArrayIndexable {

int getIndex();

}

或者,如果您无法强制用户实现该接口(interface),那么您可以使用将对象映射到 int 的映射来维护某种索引。

int x = ...;
int y = ...;
int[][] array = new int[x][y];

Map<SomeClass, Integer> index = new HashMap<>();
for(int i = 0; i < Math.max(x, y); i++) {
SomeClass m = ...; // object associated with i
index.put(m, i);
}

SomeClass obj = ...;

// accessing the array
array[index.get(obj)][index.get(obj)] = 1;

关于java - Java可以使用用户定义的对象作为二维数组键的索引吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35679477/

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