【发布时间】:2018-04-25 03:47:45
【问题描述】:
假设我有一个多维对象数组
Object[][][] obj=new Object[10][10][10];
充满了任何种类的物体。有没有方法
public ArrayList(Integer) getIndices(Object o)
将对象作为输入并将对象的索引返回给我?
我不关心我的多维数组的实际类:您可以将Object 替换为您选择的另一个类。我什至不关心输出的类型:它可以是int 的array,或者ArrayList(Integer),或者任何你想要的。最后,当输入对象不在 3D 矩阵中时,我不关心此方法是否会引发异常。
我只是想了解有哪些方法或多或少可以满足我的需求。
有这样的方法吗?如果不是,我该如何定义它?我能想到的唯一方法是迭代 3D 矩阵的条目并使用.equals 手动检查。这是最快的方法吗(即使是大型矩阵)?
提前谢谢你
附:我检查了诸如this 之类的旧问题,但没有帮助。
【问题讨论】:
-
通过索引,三重循环查找对象。这将是
O(a * b * c)- 其中a、b和c是维度的大小。 -
这是最快的方法吗?:这是唯一的方法。
-
谢谢,我只是想知道是否可以定义更好的方法,但我知道不是这样
-
如果你想要更高的效率,你必须花费额外的内存:维护一个映射对象-> int[](索引)的反向集。这当然只有当一个对象在你的矩阵中出现的次数不超过一次时才有效。或者,您可以在
Object中添加一些字段来保存索引。
标签: java multidimensional-array indices