2

多次元配列リストに入れたデータを見つけるのに問題があります。私は基本的に配列リストでいっぱいの配列リストを持っています...

ArrayList<ArrayList<Integer>> array = new ArrayList<ArrayList<Integer>>();

そのため、同じ配列リスト内の他のデータと比較しているため、特定のデータを含む配列リストを見つけるために indexOf を使用したいと考えています。

たとえば、for ループを使用してこのデータを検索できることを知っています。

for (i = 0; i < array.size(); i++)
{
    if (array.get(a).get(0) == array.get(i).get(0))
        //then do something
}

しかし、indexOf または lastindexOf を使用する方が簡単だと思いました。誰かが私がそれを使用する正しい方法を知っていますか? のようなものだと思います

array.indexOf(array.get(????).get(0))

確信はないけど :(

4

3 に答える 3

1

残念ながら、これは不可能です。それ以上

array.indexOf(array.get(????).get(0))

array.get(????).get(0)は整数でarrayありArrayListArrayLists ではなくs であるため、正しくありませんInteger

于 2011-12-01T00:15:02.477 に答える
0

外部ライブラリを使用できますか? はいの場合、グアバは Iterables.indexOf(Iterable, Predicate) を定義します

次に、次のように配列を検索できます。

final int whatYoureLookingFor = 1232;
int index = Iterables.indexOf(array, new Predicate<ArrayList<Integer>>() {
        public boolean apply(ArrayList<Integer> a) {
             return a.contains(whatYoureLookingFor);
        }
    });
于 2011-12-01T00:21:54.267 に答える
0

まず、座標コンテナーが必要です。次に、ルックアップ メソッドが必要です。これは両方ともファクトリメソッドを使用しています。次に、MultiIndex にリストを渡すと、そこから値が取得されます。

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);
    }
}
于 2011-12-01T00:21:56.170 に答える