我在找到我的多维阵列列表中的一些数据时有一个问题。我基本上有一个充满阵列列表的阵列列表...

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 是一个 ArrayListArrayListS,不是 Integers。

其他提示

您可以使用外部库吗?如果是,则 瓜瓦 定义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);
    }
}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top