我已开始在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组,基本上是较大集合的元素。
请有人帮忙吗?
我没有仅仅提出代码建议!!!
答案 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);