1

での実装を開始しTreeSetましたjava。知りたいのですが、セット内にセットを作成することは可能ですか。

たとえば、出力を提供するセットを作成する必要があります

{{1,2,3,4,5,6,7,8},(1,{1,2,3,4,5,6,7,8})}

問題は、目的の出力を提供するためにセットに追加できないことです。treeset内に入れてみましたarraylist

ArrayList<TreeSet<Integer>> SET = new ArrayList<TreeSet<Integer>>();

これでも希望する結果が得られず、コードが非常に複雑になります。

ご覧のとおり、出力には基本的に大きなセットの要素である2つのセットがあります。

誰か助けてもらえますか?

私はコードのみのアドバイスを求めていません!!!

4

2 に答える 2

1

TreeSet<T>Tその中に要素を配置するためにコンパレータをオンにする必要があります。TreeSetを比較する方法を「理解」するカスタムコンパレータを使用して、をセレートできますTreeSet。これにより、外側のツリーセットで、内側に配置するツリーセットの順序を決定できます。

TreeSet<TreeSet<Integer>> outer = new TreeSet<TreeSet<Integer>>(
    new Comparator<TreeSet<Integer>>() {
        public int compare(TreeSet<Integer> lhs, TreeSet<Integer> rhs) {
            Iterator<Integer> li = lhs.Iterator();
            Iterator<Integer> ri = rhs.Iterator();
            while (li.hasNext() && ri.hasNext()) {
                int res = li.next().compareTo(ri.next());
                if (res != 0) return res;
            }
            if (li.hasNext()) return 1;
            if (ri.hasNext()) return -1;
            return 0;
        }
    }
);
于 2013-01-21T19:18:23.533 に答える
0

Genericsの使用は、混乱を招きます。

これ: ArrayList<TreeSet<Integer>> SET = new ArrayList<TreeSet<Integer>>();

リストにリストを入れません。

これを行うには、これを行う必要があります。

TreeSet s = new TreeSet();
TreeSet subset = new TreeSet();
s.add(subset);
于 2013-01-21T19:19:36.993 に答える