Come è possibile scorrere tra gli elementi di un LinkedHashSet
dall'ultimo elemento al primo?Java LinkedHashSet iterazione all'indietro
risposta
Se si desidera continuare ad utilizzare le collezioni, è possibile utilizzare il seguente:
LinkedHashSet<T> set = ...
LinkedList<T> list = new LinkedList<>(set);
Iterator<T> itr = list.descendingIterator();
while(itr.hasNext()) {
T item = itr.next();
// do something
}
Se stai bene con l'utilizzo di una matrice, invece, è potrebbe dare un'occhiata a hvgotcodes' answer.
er, supponendo che si intende LinkedHashSet ...
userei toArray e basta usare un rovescio ciclo for.
Potrebbe esserci un modo migliore per farlo, ma dovrebbe funzionare. toArray
garanzie qualsiasi ordine conservata
Se questo set rende alcuna garanzia in quanto alle quale ordine i suoi elementi sono restituito dalla propria iteratore, questo metodo deve restituire gli elementi nel stesso ordine.
Qualcosa di simile
Set<MyType> mySet = new LinkedHashSet();
...
MyType[] asArray = mySet.toArray();
for (int i = asArray.length - 1; i>=0; i--){
..
}
Funziona ma è piuttosto inefficiente perché copia il set ... – fig
Dal javadoc: "Questa lista collegata definisce l'ordine iterazione, che è l'ordine in cui gli elementi sono stati inseriti nel set (inserimento-ordine)."
Quindi si può semplicemente:
LinkedHashSet<Integer> numbers = new LinkedHashSet<Integer>();
numbers.add(1);
numbers.add(2);
numbers.add(33);
numbers.add(44);
numbers.add(108);
for (Integer i : numbers) {
System.out.println(i);
}
"dall'ultimo al primo." – hvgotcodes
Questo è un altro modo:
LinkedHashSet<T> set = ...
List<T> list = new ArrayList<>(set);
Collections.reverse(list);
for(T item : list){
...
}
Se davvero voleva dire LinkedHashSet, si potrebbe mettere gli elementi in un ArrayList e quindi utilizzare ListIterator del ArrayList.
ListIterator<T> l = new ArrayList<T>(yourLinkedHashList).listIterator();
// ListIterator can iterate in reverse
while(l.hasPrevious()) {
T obj = l.previous();
}
- 1. LinkedHashSet o ArrayList
- 2. Ordinamento di LinkedHashSet
- 3. Qual è l'equivalente di LinkedHashSet (Java) in C#?
- 4. Java integer iterazione ciclica Stenografia
- 5. Iterazione all'indietro
- 6. Iterazione tramite stringa con .find() in Java espressione regolare
- 7. Iterazione di un elenco in ordine inverso in java
- 8. Iterazione su una HashMap di HashMaps in Java (o Scala)
- 9. GoTo Prossima iterazione in Per loop in java
- 10. Iterazione attraverso un array Java a lunghezza variabile
- 11. iterazione su tutte le directory in un file zip java
- 12. Java - Iterazione su ogni due elementi di un elenco
- 13. Come si esegue iterazione su uno streaming in Java usando?
- 14. foreach iterazione generica di NamedNodeMap
- 15. iterazione raccolta hash
- 16. ciclico finestra scorrevole iterazione
- 17. Python multi-listazione iterazione
- 18. Doppia iterazione di lista
- 19. Iterazione in LaTeX
- 20. struttura Groovy iterazione
- 21. iterazione nidificata in Scala
- 22. LLVM struct matrice iterazione
- 23. Iterazione vs concatenazione elenco
- 24. Iterazione un WeakHashMap
- 25. Indice iterazione linguaggio
- 26. Iterazione sui riferimenti?
- 27. iterazione parallela in C#?
- 28. Iterazione su collezione sincronizzata
- 29. iterazione casuale in Python
- 30. iterazione array scala 2d
Perché in Java Collection Framework non è incluso. LinkedHashSet mantiene l'ordine FIFO quindi dovrebbe esserci un'utilità per convertire l'ordine in LIFO che sembra essere a portata di mano quando il requisito è mantenere l'ordine di inserimento allo stesso tempo, potremmo aver bisogno di iterare in ordine inverso. Nel mio progetto c'erano già un paio di volte che avevo bisogno di questo. Sfortunatamente, devo usare List come intermediario per sfruttare l'utility Collections.reverse(). Questo è sporco, no? – Bhavesh