TreeSet在Set内设置

时间:2013-01-21 19:16:01

标签: java arraylist treeset

我已开始在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组,基本上是较大集合的元素。

请有人帮忙吗?

我没有仅仅提出代码建议!!!

2 个答案:

答案 0 :(得分: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;
        }
    }
);

答案 1 :(得分:0)

您对Generics的使用令您感到困惑。

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

不将列表放在列表中。

要做到这一点,你需要这样做:

TreeSet s = new TreeSet();
TreeSet subset = new TreeSet();
s.add(subset);