Dav*_*eng 21 java iteration set linkedhashset
如何迭代LinkedHashSet从最后一项到第一项的a 项?
Jef*_*rey 22
如果要继续使用集合,可以使用以下内容:
LinkedHashSet<T> set = ...
LinkedList<T> list = new LinkedList<>(set);
Iterator<T> itr = list.descendingIterator();
while(itr.hasNext()) {
T item = itr.next();
// do something
}
Run Code Online (Sandbox Code Playgroud)
如果你没有使用数组,你可以看看hvgotcodes的答案.
呃,假设你的意思是LinkedHashSet ......
我会使用toArray并使用反向循环.
可能有更好的方法,但这应该有效. toArray保证保留任何订单
如果此set对其迭代器返回的元素的顺序做出任何保证,则此方法必须以相同的顺序返回元素.
就像是
Set<MyType> mySet = new LinkedHashSet();
...
MyType[] asArray = mySet.toArray();
for (int i = asArray.length - 1; i>=0; i--){
..
}
Run Code Online (Sandbox Code Playgroud)
这是另一种方式:
LinkedHashSet<T> set = ...
List<T> list = new ArrayList<>(set);
Collections.reverse(list);
for( T item : list ){
...
}
Run Code Online (Sandbox Code Playgroud)