-
26-10-2019 - |
题
我在找到我的多维阵列列表中的一些数据时有一个问题。我基本上有一个充满阵列列表的阵列列表...
ArrayList<ArrayList<Integer>> array = new ArrayList<ArrayList<Integer>>();
因此,现在我想使用索引来查找包含特定数据的ArrayList,因为我将其与同一ArrayList中的其他数据进行比较。
例如,我知道我可以使用for Loop查找此数据 -
for (i = 0; i < array.size(); i++)
{
if (array.get(a).get(0) == array.get(i).get(0))
//then do something
}
但是我认为使用索引或LastIndexof会更容易。有人知道我会使用它的正确方法吗?我认为这是像
array.indexOf(array.get(????).get(0))
但是我不确定:(
解决方案
不幸的是,这是不可能的。比那更多的
array.indexOf(array.get(????).get(0))
是不正确的,因为 array.get(????).get(0)
将是一个整数, array
是一个 ArrayList
的 ArrayList
S,不是 Integer
s。
其他提示
您可以使用外部库吗?如果是,则 瓜瓦 定义iterables.indexof(迭代,谓词)
然后,您可以像这样查找您的数组:
final int whatYoureLookingFor = 1232;
int index = Iterables.indexOf(array, new Predicate<ArrayList<Integer>>() {
public boolean apply(ArrayList<Integer> a) {
return a.contains(whatYoureLookingFor);
}
});
首先,我们需要一个坐标容器。然后,我们需要一种查找方法。这使他们都使用工厂方法。然后,您可以将多索引列表传递,它将检索那里的值。
class MultiIndex<E> {
static <E> MultiIndex<E> indexOf(List<List<E>> list, E e) {
for(int i = 0; i < list.length; i++) {
List<E> in = list.get(i);
int index = in.indexOf(e);
if(index > -1) return new MultiIndex(i,index);
}
return null;
}
int outside;
int inside;
private MultiIndex(int out, int in) {
outside = out;
inside = in;
}
E get(List<List<E>> list) {
return list.get(outside).get(inside);
}
}
不隶属于 StackOverflow