我有一个 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 );
}
}
我需要 TreeSet
,因为它的插入和排序速度非常适合我的工作。我确实需要一个不使用库的解决方案。
你会如何解决这个问题?
最佳答案
您可以使用 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 );
}
}
正如 OldCurmudgeon 所提到的,可以用
来简化for (Object element1 : tree) {
for (Object element2 : tree.tailSet(o, true)) {
System.out.println("Interact: " + element1 + " " + element2 );
}
}
关于java - 在树集中的迭代器中具有起点的迭代器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33495467/