首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >集合内的TreeSets集

集合内的TreeSets集
EN

Stack Overflow用户
提问于 2013-01-22 03:16:01
回答 2查看 364关注 0票数 1

我已经开始在java中实现TreeSet了。我想知道,有没有可能在一个集合中创建一个集合。

例如,我需要创建一个提供输出的集合

代码语言:javascript
复制
{{1,2,3,4,5,6,7,8},(1,{1,2,3,4,5,6,7,8})}

问题是我不能添加到我的集合中去给出想要的输出。我甚至尝试过将我的treeset放在arraylist中。

代码语言:javascript
复制
ArrayList<TreeSet<Integer>> SET = new ArrayList<TreeSet<Integer>>();

这仍然没有给我想要的结果,并且使我的代码变得非常复杂。

如你所见,输出有2个集合,它们基本上是一个更大集合的元素。

有谁能帮上忙吗?

我不是在征求代码方面的建议!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-01-22 03:18:24

TreeSet<T>需要T上的一个比较器来排列其中的元素。你可以使用一个自定义的比较器来验证一个TreeSet,这个比较器可以“理解”如何比较TreeSet。这将让外部的树集决定你放在里面的树集的顺序:

代码语言:javascript
复制
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
EN

Stack Overflow用户

发布于 2013-01-22 03:19:37

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

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

不会将列表放在列表中。

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

代码语言:javascript
复制
TreeSet s = new TreeSet();
TreeSet subset = new TreeSet();
s.add(subset);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14445627

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档