Java LinkedHashSet向后迭代

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的答案.


hvg*_*des 7

呃,假设你的意思是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)


tru*_*ity 5

这是另一种方式:

LinkedHashSet<T> set = ...

List<T> list = new ArrayList<>(set);
Collections.reverse(list);

for( T item : list ){
   ...
}
Run Code Online (Sandbox Code Playgroud)