gpt4 book ai didi

java - 在树集中的迭代器中具有起点的迭代器

转载 作者:搜寻专家 更新时间:2023-11-01 02:23:09 25 4
gpt4 key购买 nike

我有一个 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com