gpt4 book ai didi

java - 如何从连续点列表创建部分列表

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:44:10 26 4
gpt4 key购买 nike

这个问题很容易用经典的for循环解决

for (i = 0; i < points.size() - 1; i++) {
PointAG p1 = this.points.get(i);
PointAG p2 = this.points.get(i + 1);
sections.add(new LineSection(p1, p2));
}

是否有可能以功能方式实现相同的功能,例如使用两个迭代器?

最佳答案

您可以这样用一个迭代器来完成:

Iterator<PointAG> it = points.iterator();
if (it.hasNext()) {
PointAG prev = it.next();
while (it.hasNext()) {
PointAG next = it.next();
sections.add(new LineSection(prev, next));
prev = next;
}
}

您可以在没有任何额外变量的情况下编写循环体:

  while (it.hasNext()) {
sections.add(new LineSection(prev, prev = it.next()));
}

这利用了 Java 保证的从左到右的评估顺序,这意味着第一个 prev 在重新分配之前被评估。这可能不是最好的方法:在阅读代码时很容易忽略表达式中的副作用;使用您阅读起来舒服的那个。

这样做 - 使用迭代器 - 比非 RandomAccess 列表实现的索引更有效,例如 LinkedList

关于java - 如何从连续点列表创建部分列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54260251/

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