2011-01-01 2 views
3

Hallo ich bekomme List-Objekt, das Pojo-Klassenobjekte der Tabelle enthält. In meinem Fall muss ich die Tabellendaten in umgekehrter Reihenfolge anzeigen. bedeutet, dass für ex ich einige Zeilen zu bestimmten Tabelle in der Datenbank hinzufügen, wenn ich vor kurzem hinzugefügt wurde, speichert die Daten in der letzten Zeile in der Tabelle (in der Datenbank). hier muss ich den gesamten Inhalt der Tabelle in meiner Jsp-Seite in umgekehrter Reihenfolge anzeigen, was bedeutet, dass das, was ich kürzlich eingefügt habe, die erste Zeile in meiner JSP-Seite anzeigen muss.Wie erhalten wir die List Objekte in Rückwärtsrichtung?

hier war mein Code wie,

List lst = tabledate.getAllData();//return List<Table> Object 
Iterator it = lst.iterator(); 
MyTable mt = new MyTable();//pojo class 
while(it.hasNext()) 
{ 
    mt=(MyTable)it.next(); 
    //getting data from getters. 
    System.out.println(mt.getxxx()); 
    System.out.println(mt.getxxx()); 
    System.out.println(mt.getxxx()); 
    System.out.println(mt.getxxx()); 
} 

Antwort

1

Sie nicht einen Iterator in diesem Fall verwenden können. Sie müssen Index basierten Zugriff verwenden:

 
int size = lst.size(); 
for (int i=size - 1; i >= 0; i --) 
{ 
    MyTable mt = (MyTable)lst.get(i); 
    .... 
} 

Btw: Es gibt keine Notwendigkeit, eine neue MyTable() vor der Schleife zu erstellen. Dies ist eine Instanz, die sofort weggeworfen wird und keinem Zweck dient.

+0

Wenn es ein LinkedList ist, wird das dauern O (n^2) Zeit statt O (n) – adamax

+0

Einverstanden. Deshalb wäre 'ListIterator' besser;) –

9

Verwenden Sie ein ListIterator durch die Liste mit hasPrevious() und previous() iterieren:

ListIterator it = lst.listIterator(lst.size()); 
while(it.hasPrevious()) { 
    System.out.println(it.previous()); 
} 
+0

Besser als meine Antwort;) –

+1

@a_horse Ich liebe es, wenn OP die" schlechtere "Antwort wählt. Naja. : -/ – marcog

+0

Nun, deine Antwort ist falsch. Es sollte sagen: ListIterator it = lst.listIterator (lst.size()); – adamax