我已经开始在java中实现TreeSet了。我想知道,有没有可能在一个集合中创建一个集合。
例如,我需要创建一个提供输出的集合
{{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个集合,它们基本上是一个更大集合的元素。
有谁能帮上忙吗?
我不是在征求代码方面的建议!
发布于 2013-01-22 03:18:24
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-22 03:19:37
你对泛型的使用让你感到困惑。
这个:ArrayList<TreeSet<Integer>> SET = new ArrayList<TreeSet<Integer>>();
不会将列表放在列表中。
要做到这一点,你需要这样做:
TreeSet s = new TreeSet();
TreeSet subset = new TreeSet();
s.add(subset);https://stackoverflow.com/questions/14445627
复制相似问题