我想知道是否有一种方法可以在Java中反向遍历Iterable。
Iterable<DataSnapshot> snapShotIterator = dataSnapshot.getChildren();
for (DataSnapshot doc : snapShotIterator) {
BlogPost blogPost = doc.getValue(BlogPost.class);
blog_list.add(blogPost);
}上面是我试图以相反顺序遍历的代码,是否有像集合一样的Iterables的反向函数?
提前感谢!
亨俊
发布于 2019-10-05 19:30:15
您可以使用Android Studio替换为"For Loop“,然后”反转它“。
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);
}显然,这没有考虑到你有一个" Iterator“,但是你得到了这个想法,以防你想要直接迭代集合,而不是求助于Iterator接口。
发布于 2019-10-05 17:19:32
基本上,您可以通过遍历它并将其值存储在反向列表中来反向迭代,然后遍历该列表,
您必须首先遍历iterable才能以相反的顺序进行迭代
您可以使用org.apache.commons.collections.iterators来完成此操作,而无需自己实现
ReverseListIterator reverseListIterator = new ReverseListIterator(list);
当然,您还可以使用许多其他库
有关更多信息,请访问here
https://stackoverflow.com/questions/58245039
复制相似问题