Java 集合中的树集
我已经开始在Java 集合中的树集,java,arraylist,treeset,Java,Arraylist,Treeset,我已经开始在java中实现TreeSet。 我想知道,是否有可能在一个集合中创建一个集合 例如,我需要创建一个集合来提供输出 {{1,2,3,4,5,6,7,8},(1,{1,2,3,4,5,6,7,8})} 问题是我无法将add添加到集合中以提供所需的输出。 我甚至尝试将我的树集放入数组列表中 ArrayList<TreeSet<Integer>> SET = new ArrayList<TreeSet<Integer>>(); ArrayL
java
中实现TreeSet
。
我想知道,是否有可能在一个集合中创建一个集合
例如,我需要创建一个集合来提供输出
{{1,2,3,4,5,6,7,8},(1,{1,2,3,4,5,6,7,8})}
问题是我无法将add添加到集合中以提供所需的输出。
我甚至尝试将我的树集
放入数组列表
中
ArrayList<TreeSet<Integer>> SET = new ArrayList<TreeSet<Integer>>();
ArrayList SET=new ArrayList();
这仍然不能给出我想要的结果,并且使我的代码变得非常复杂
如您所见,输出有两个集合,它们基本上是较大集合的元素
请问有人能帮忙吗
我不是只要求代码建议 TreeSet
需要在T
上安装一个比较器,以便排列其中的元素。您可以使用“了解”如何比较TreeSet
s的自定义比较器来切割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;
}
}
);
TreeSet-outer=新树集(
新比较器(){
公共整数比较(树集lhs、树集rhs){
迭代器li=lhs.Iterator();
迭代器ri=rhs.Iterator();
while(li.hasNext()&&ri.hasNext()){
int res=li.next().compareTo(ri.next());
如果(res!=0)返回res;
}
if(li.hasNext())返回1;
if(ri.hasNext())返回-1;
返回0;
}
}
);
TreeSet
需要在T
上安装一个比较器,以便排列其中的元素。您可以使用“了解”如何比较TreeSet
s的自定义比较器来切割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;
}
}
);
TreeSet-outer=新树集(
新比较器(){
公共整数比较(树集lhs、树集rhs){
迭代器li=lhs.Iterator();
迭代器ri=rhs.Iterator();
while(li.hasNext()&&ri.hasNext()){
int res=li.next().compareTo(ri.next());
如果(res!=0)返回res;
}
if(li.hasNext())返回1;
if(ri.hasNext())返回-1;
返回0;
}
}
);
您对泛型的使用让您感到困惑
这:ArrayList SET=new ArrayList()代码>
不会在列表中列出列表
为此,您需要执行以下操作:
TreeSet s = new TreeSet();
TreeSet subset = new TreeSet();
s.add(subset);
你对泛型的使用让你感到困惑
这:ArrayList SET=new ArrayList()代码>
不会在列表中列出列表
为此,您需要执行以下操作:
TreeSet s = new TreeSet();
TreeSet subset = new TreeSet();
s.add(subset);
编写自己的toString()
以创建所需的输出格式。编写自己的toString()
以创建所需的输出格式。这对我试图实现的目标非常有用。我明白我做错了什么,哈哈。谢谢你的帮助:)这对我想要实现的目标很有帮助。我明白我做错了什么,哈哈。谢谢你的帮助:)