【问题标题】:Is there a way to begin the enhanced for loop from the end in java [duplicate]有没有办法在java中从末尾开始增强for循环[重复]
【发布时间】:2015-09-01 18:27:44
【问题描述】:

我有两个 Java 列表。一方面,我想从头开始迭代,另一方面,我想从头开始。我想为此使用增强的 for 循环,但我不确定该怎么做。 有什么建议吗?

【问题讨论】:

  • 首先,您应该自己尝试。没那么复杂。
  • 为什么需要使用增强的for循环?它使最常见的情况变得非常简单,但您仍然可以使用原始的 for 循环来处理所有其他不太常见的情况。

标签: java for-loop


【解决方案1】:

您可以创建列表的副本并将其反转:

List<T> listCopy = new ArrayList<T>(list);
Collections.reverse(listCopy);
for(T t : listCopy) {
    ... 
}

您也可以使用ListIterator(增强的for循环在后台使用Iterator):

一个列表迭代器,允许程序员在任一方向遍历列表。

【讨论】:

  • 性能方面不是最佳和明智的!
  • 其实答案应该是没有办法完全按照 OP 的要求去做。任何解决方法都不是最佳的。
  • Guava Lists 有一个无需复制即可反转的工具:Lists.reverse(letters)
  • @tkruse 这是一个不错的选择,它使用我在答案中提到的自定义ListIterator。无论如何,我认为您应该编写 Guava 解决方案作为答案:)
  • 这两个问题都提到了相关的,这个问题确实是重复的,应该关闭,所以我不会回答。不过,请随意扩展您的答案,
【解决方案2】:

不,您不能使用增强型 For 循环从列表的末尾迭代到开头。当您希望按从前到后的顺序逐步遍历元素时,应该使用增强的 For 循环来简化。在任何其他情况下,“标准”For-Loop 是最优化的。

【讨论】:

    猜你喜欢
    • 2013-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-18
    • 2021-02-28
    • 2013-11-24
    相关资源
    最近更新 更多