-4

私はArrayListを持っています:

ArrayList<Integer> example = new ArrayList<Integer>();
example.add(1);
example.add(1);
example.add(2);
example.add(3);
example.add(3);

だから私は、同じ値を含む他の3つのArrayListsを作成したいと思います(ArrayListには1つの値しかありません)。

それは可能ですか?

4

1 に答える 1

0

実装された要素をフィルター処理する方法を次に示します。値をカプセル化するために、(ジェネリック クラスで) ジェネリック Map を使用します。

  • キーは必要なオブジェクトであり、値は次のように決定されます。
    • キーが存在しなかった場合、最大で 1 つの要素を持つリストがあり、これはキーと同じです。
    • キーが以前に存在していた場合、キーと同じ要素を少なくとも 1 つ含むリストがあります。

並べた様子がこちら。分割したいオブジェクトのタイプでインスタンス化します。

public class UniqueSplitter<T> {

    public Map<T, List<T>> filterOutElements(final List<?> theCandidateList) {
        final Map<T, List<T>> candidateMap = new HashMap<>();
        for(Object element : theCandidateList) {
            if(candidateMap.containsKey(element)) {
                candidateMap.get(element).add((T) element);
            } else {
                final List<T> elementList = new ArrayList<>();
                elementList.add((T) element);
                candidateMap.put((T)element, elementList);
            }
        }
        return candidateMap;
    }
}
于 2013-07-24T05:31:58.010 に答える