gpt4 book ai didi

java - 反向迭代器 - 用于 reduceRight 功能

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

尝试实现一些 reduceRight 功能。对于性能来说,从右到左迭代会很好,而不是先反转所有内容,然后再从左到右。通常我们这样做:

Iteratable iterable ...;
Iterator iterator = iterable.iterator();
iterator.next();

但我正在寻找类似的东西:

Iteratable iterable ...;
Iterator iterator = iterable.reverseIterator();
iterator.next();

我看到了这个解决方案:Iterating through a list in reverse order in java

当前接受的答案说这是可行的:

ArrayList<...> a = new ArrayList<...>();

// Add elements to list.

// Generate an iterator. Start just after the last element.
ListIterator li = a.listIterator(a.size());

// Iterate in reverse.
while(li.hasPrevious()) {
System.out.println(li.previous());
}

有谁知道如何在手头只有一个 Iterable 的情况下实现反向迭代?我手头没有 ArrayList 或 List,我手头有一个 Iterable。我想我可以将 Iterable 转换为 ArrayList,反转列表,然后得到一个迭代器,但这一点都不好玩 :)

最佳答案

简单的回答:不可能以通用的高性能方式。

迭代器的本质是让你一个方向,而不是两个。并想象一个单链表。那玩意儿果然“只有一个方向”!

因此,如何反转可迭代对象的问题确实需要您查看确切的实现。没有这种可能性,您必须使用中间数据结构在反转之前获取所有条目。

关于java - 反向迭代器 - 用于 reduceRight 功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54731203/

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