【问题标题】:Iterable Reverse For Each Loop Java每个循环Java的可迭代反向
【发布时间】:2020-02-03 07:15:07
【问题描述】:

我想知道是否有办法在 Java 中反向遍历 Iterable。

Iterable<DataSnapshot> snapShotIterator = dataSnapshot.getChildren();

for (DataSnapshot doc : snapShotIterator) {
    BlogPost blogPost = doc.getValue(BlogPost.class);
    blog_list.add(blogPost);
}

上面是我试图以相反顺序遍历的代码,Iterables 是否有像 Collections 一样的反向函数?

提前致谢!

贤俊

【问题讨论】:

标签: java android


【解决方案1】:

您可以使用 Android Studio 替换为“For Loop”,然后“Reverse it”

        ArrayList<String> list = new ArrayList<>();

        list.add("Hello");
        list.add("World");

        // Iterate forwards
        for (String string : list) {
            //
        }

这是一次正常的迭代。

现在,如果您将自己置于 for 语句的顶部并执行 alt-enter(在 Linux/Windows 上,不记得 macOS 快捷方式)...您会得到:

然后,如果您再次执行此操作(alt-enter),您现在可以选择反转循环:

看起来像这样:

        for (int i = list.size() - 1; i >= 0; i--) {
            String string = list.get(i);
        }

显然,这并不认为您有一个“迭代器”,但如果您想直接迭代集合,而不使用迭代器接口,您就会明白这一点。

【讨论】:

  • 你应该提供问题用例的答案,你可以使用迭代器获取索引添加一行吗?
【解决方案2】:

基本上你可以通过遍历它并将它的值存储在一个反向列表中来反转它,然后遍历该列表,

您必须首先遍历可迭代对象才能以相反的顺序进行迭代

您可以使用org.apache.commons.collections.iterators 来实现,而无需自己实现

ReverseListIterator reverseListIterator = new ReverseListIterator(list);

当然还有很多其他的库你可以使用

更多内容请关注here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-04-28
    • 1970-01-01
    • 2016-06-03
    • 1970-01-01
    • 2021-04-13
    • 1970-01-01
    • 2015-03-15
    • 1970-01-01
    相关资源
    最近更新 更多