1

我已经开始实施TreeSetin 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使用“了解”如何比较TreeSets 的自定义比较器来创建 a。这将使外部树集决定您放入其中的树集的顺序:

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

您对泛型的使用让您感到困惑。

这个: 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 回答