在java中以相反的顺序添加了ArrayList中的元素

Jff*_*2ej 1 java arraylist

我得到ArrayList:

ArrayList logs;
for(Logs log : getLogs()){           
    logs.add(log.getName();        
}
Run Code Online (Sandbox Code Playgroud)

我怎么能以相反的顺序得到这个列表?

Fri*_*itz 5

使用类的reverse方法Collections来反转列表.请注意,这会影响列表本身.

ArrayList logs = new ArrayList(); //Initialize this list or your
                                  //code won't compile.

for(Logs log : getLogs()){           
    logs.add(log.getName();        
}

Collections.reverse(logs);
Run Code Online (Sandbox Code Playgroud)

如果你想要一个新的列表,创建一个新的列表,通过使用addAll和最后反转那个列表来添加所有元素.


Dan*_*nny 5

尝试使用add(int index, E element).

ArrayList logs;
for(Logs log : getLogs()){           
    logs.add(0,log.getName());        
}
Run Code Online (Sandbox Code Playgroud)

这将始终将元素作为第一个元素插入,而不是将其附加到列表的末尾,以便您的列表被反转。


Jud*_*tal 5

for ( int i = logs.size() - 1; i >= 0; --i )
    // do something with logs.get( i )
    ;
Run Code Online (Sandbox Code Playgroud)

不要浪费时间来反转你可以按相反顺序迭代的东西。

更新:listIterator 也可以按相反的顺序使用,并且是更通用的解决方案:

for ( ListIterator< Logs > lit = logs.listIterator( logs.size() ); lit.hasPrevious(); )
    // do something with lit.previous()
    ;
Run Code Online (Sandbox Code Playgroud)

  • 如果接口是“List”而不是“ArrayList”,那么使用“get(i)”可能会带来比“reverse”更大的性能灾难。我们有“listIterator”。 (2认同)