I get ArrayList:
ArrayList logs;
for(Logs log : getLogs()){
logs.add(log.getName();
}
How I can get this list in reverse order?
I get ArrayList:
ArrayList logs;
for(Logs log : getLogs()){
logs.add(log.getName();
}
How I can get this list in reverse order?
Use the reverse
method of the Collections
class to reverse the list. Please note that this will affect the list itself.
ArrayList logs = new ArrayList(); //Initialize this list or your
//code won't compile.
for(Logs log : getLogs()){
logs.add(log.getName();
}
Collections.reverse(logs);
If you want a new list, create a new one, add all of the elements to it by using addAll
and, finally, reverse that one.
Try using add(int index, E element)
.
ArrayList logs;
for(Logs log : getLogs()){
logs.add(0,log.getName());
}
This will always insert the element as the first element instead of appending it to the end of the list so your list is reversed.
for ( int i = logs.size() - 1; i >= 0; --i )
// do something with logs.get( i )
;
Don't waste time reversing something you can iterate in reverse order.
UPDATE: listIterator can also be used in reverse order, and is a more general solution:
for ( ListIterator< Logs > lit = logs.listIterator( logs.size() ); lit.hasPrevious(); )
// do something with lit.previous()
;
As of Java 5 (at least, maybe sooner), there is support for this in the Collections library.
Collections.reverse(logs);
Reversing the collection is not necessary and is potentially a performance disaster (depending on the size). The most natural JDK way is to involve a listIterator
:
for (ListIterator<String> it = list.listIterator(list.size()); it.hasPrevious();) {
...
}
/** ArrayList Elements Reverse Without Using Collections Reverse */
public static void main(String s[]) {
ArrayList<Integer> alOrig = new ArrayList<Integer>();
alOrig.add(210);
alOrig.add(213);
alOrig.add(214);
alOrig.add(216);
alOrig.add(217);
System.out.println("ArrayList Elements in Normal Order");
Iterator alOrigItr = alOrig.iterator();
while (alOrigItr.hasNext()) {
System.out.println("" + alOrigItr.next());
}
System.out.println("ArrayList Elements in Reverse Order ");
ArrayList<Integer> alRev = new ArrayList<Integer>();
for (int i = alOrig.size(); i > 0; i--) {
alRev.add(alOrig.size() - i, alOrig.get(i - 1));
}
for (Integer alRevI : alRev) {
System.out.println("" + alRevI);
}
}
}