Ich frage mich, ob es möglich ist, vom letzten bis zum ersten Element in einer ArrayList zu iterieren, wenn ja wie? Der Grund ist, weil ich das letzte Element der Liste hinzugefügt, entferntWie man von der letzten zur ersten ArrayListe iteriert?
Antwort
Während Sie können jederzeit Ihre ArrayList
iterieren einen Index, wie dieser
List<String> myList = new ArrayList<String>();
... add code to populate the list with some data...
for (int i = myList.size() - 1 ; i >= 0 ; i--) {
if (myList.get(i).equals("delete me")) {
myList.remove(i);
}
}
würden Sie besser dran mit einem ListIterator<T>
zum Zwecke der Löschen von Nachrichten aus ArrayList
verwenden sein:
ListIterator<String> listIter = myList.listIterator();
while (listIter.hasNext()) {
if (listIter.next().equals("delete me")) {
listIter.remove();
}
}
Liste Iteratoren können verwendet werden, um Ihre Liste auch rückwärts zu durchlaufen - wie folgt:
ListIterator<String> listIter = myList.listIterator(myList.size());
while (listIter.hasPrevious()) {
String prev = listIter.previous();
// Do something with prev here
}
Der Anfangsindex des Iterators sollte gleich dem Index des letzten Elements + 1 sein. Als docs sagen Sie: "Ein erster Aufruf an previous
würde das Element mit dem angegebenen Index minus eins zurückgeben."
Aber geht diese Option nicht von Anfang bis Ende? Ich muss die Elemente von der letzten zum ersten auf die bestmögliche Weise entfernen, weniger anfällig für Fehler –
@RicardoSanchez Kommentar wurde vor 10 Minuten zu dieser Frage mit einem 1-Liner, der das letzte Element entfernt veröffentlicht. Wenn das nicht genug ist, müssen Sie vielleicht Ihre Anforderung schärfen – Cruncher
Der letzte Code arbeitete für mich ohne die "-1" innerhalb der listIterator() -Methode: "myList.listIterator (myList.size());" Mit der "-1" ignorierte der Interator den letzten Punkt, beginnend mit dem vorletzten. – mizerablebr
Wenn Sie müssen nur das letzte Element eines Arrays Liste entfernen, man konnte einfach tun:
arrayList.remove(arrayList.size()-1);
Wenn Sie entfernen wollten alle Elemente von hinten nach vorne, können Sie diese für Schleife verwenden:
for(int i = arraList.size()-1; i >= 0; i--)
{
arrayList.remove(i);
}
weitere Infomationen auf Array-Listen, können Sie hier gehen: http://www.tutorialspoint.com/java/java_arraylist_class.htm
Hop Das hilft.
Hier ist eine Möglichkeit, es zu tun (Ihr Grund, warum ist eine andere Frage):
import java.util.*;
List<String> list = new ArrayList<String>();
list.add("a");
list.add("b");
list.add("c");
ListIterator<String> iter = list.listIterator(list.size());
while (iter.hasPrevious()) {
String s = iter.previous();
System.out.println(s);
}
ArrayList aList = new ArrayList();
aList.add(1);
aList.add(2);
aList.add(3);
Collections.reverse(aList);
Iterator iter = aList.iterator();
while(iter.hasNext()){
iter.next();
iter.remove();//remove an element
break;//break from the loop or something else
}
Das iteriert nicht vom Ende bis zum Anfang. Sie kehrt die Sammlung um und iteriert von Anfang an. Es ist nicht nur destruktiv, sondern auch sehr ineffizient. –
List<String> names = ....
int count= names.getSize();
Iterator<String> i = names.iterator();
while (i.hasNext()) {
String s = i.next(); // must be called before you can call i.remove()
// Do something
if (count==1)
i.remove();
count--;
}
- 1. wie man Textakte liest und Daten in der Arrayliste speichert
- 2. Wie man über die ersten n Elemente einer Liste iteriert?
- 3. Wie wird über eine Liste von Elementen vom letzten Element zum ersten mit Unterstrich iteriert?
- 4. Wie komme ich direkt von der letzten Aktivität zurück zur ersten Verwendung der mobilen Zurück-Schaltfläche?
- 5. Wie man über Listen von der Mitte aus iteriert
- 6. jQuery: Wie sortierbare ('serialisieren') Arrays von der letzten zur ersten umgekehrt werden?
- 7. Wie man eine ArrayList von HashMap iteriert
- 8. Wie man std :: set iteriert?
- 9. Ermitteln der ersten und letzten UITableViewCell
- 10. Wie man Tupel iteriert oder abbildet?
- 11. Wie wird der Zellenbereich ausgewählt, von der ersten nicht-schwarzen bis zur letzten nicht-leeren Zelle (VBA)?
- 12. Wie finden ‚ersten‘ und ‚letzten‘ Vertex
- 13. Link zur letzten Version der statusbehafteten Seite
- 14. Wie man $ _POST Arrays in PHP iteriert
- 15. Wie man über die Liste der Wörterbücher in bash iteriert
- 16. Wie man über ein TR1-Tupel iteriert
- 17. (JSP2-MVC) Wie man eine Arraylist der Java-Bohne iteriert?
- 18. Wie man über mehrere erwartete Zeilen iteriert
- 19. Wie man einen Boost-Eigenschaftsbaum iteriert?
- 20. StringTemplate - Wie man durch Liste innerhalb der Liste iteriert?
- 21. Erhalten Sie ersten und letzten Tag der vorherigen Woche
- 22. Wie man die ID eines altbeacon iteriert?
- 23. Wie man über eine Tabelle iteriert?
- 24. Wie man von der zweiten Seitenanzeige in der ersten Seite
- 25. Wie man über eine priority_queue iteriert?
- 26. Wie man durch ein Javascript-Objekt iteriert?
- 27. Wie man verschachtelte Objekte in JS iteriert
- 28. Wie man durch ein fd_set iteriert
- 29. Wie man über verschiedene Kwarts iteriert?
- 30. Wie man über eine TreeMap iteriert?
Warum gehst du nicht nur 'list.remove (list.size() - 1) '? –
Wie sieht es mit Lists API-Dokumentation aus? Suchen nach "Iterator" im Dokument sollte helfen. –
Fair, aber der Grund, warum ich frage, ist, weil ich Probleme mit foreach hatte und meinen Code ändern, um while und hasNext Iterator combo zu verwenden, also wollte ich meinen Code in etwas robuster ändern, wenn das Sinn macht –