arc*_*rcs 4 java iterator treeset
我有一个TreeSet并且遍历它.在迭代它时,我必须将每个元素与其中的剩余条目进行比较TreeSet.
问题是我不能拥有一个从特定点开始的迭代器.
TreeSet<Object> tree = new TreeSet<>();
Iterator<Object> i1= tree.iterator();
while (i1.hasNext()) {
element1 = i1.next();
ListIterator<String> i2 = // start at the point from 'i1'
while (i2.hasNext()) {
element2 = i2.next();
System.out.println("Interact: " + element1 + " " + element2 );
}
}
Run Code Online (Sandbox Code Playgroud)
我需要它,TreeSet因为它的插入和分类速度非常适合我的工作.我确实需要一个不使用Libary的解决方案.
你怎么解决这个问题?
您可以使用tailSet(E fromElement, boolean inclusive)从所需元素开始获取子集,然后迭代该子集.
Iterator<Object> i1= tree.iterator();
while (i1.hasNext()) {
element1 = i1.next();
Iterator<Object> i2 = tree.tailSet(element1,true).iterator();
while (i2.hasNext()) {
element2 = i2.next();
System.out.println("Interact: " + element1 + " " + element2 );
}
}
Run Code Online (Sandbox Code Playgroud)
正如OldCurmudgeon所提到的可以简化
for (Object element1 : tree) {
for (Object element2 : tree.tailSet(o, true)) {
System.out.println("Interact: " + element1 + " " + element2 );
}
}
Run Code Online (Sandbox Code Playgroud)