Possiamo usare il vecchio ciclo for (for(i = 0, j = 0; i<30; i++,j++)
) con due variabili Possiamo usare la for-each loop (o migliorato per ciclo) in java (for(Item item : items)
con due variabili? Qual è la sintassi per questo?È possibile utilizzare il nuovo ciclo for in Java con due variabili?
risposta
Purtroppo, Java supporta solo un rudimentale foreach ciclo, chiamato migliorato per ciclo. Altre lingue, in particolare FP come Scala, supportano un costrutto noto come comprensivo di lista (Scala lo chiama per la comprensione) che consente le iterazioni nidificate, oltre al filtraggio degli elementi lungo il percorso.
No non si può. E 'zucchero sintattico per l'utilizzo di Iterator. Suggerire here per una buona risposta su questo tema.
è necessario disporre di un oggetto che contiene entrambe le variabili.
si può essere visualizzata sulla mappa un oggetto per esempio
for (Map.Entry<String,String> e: map.entrySet()) {
// you can use e.getKey() and e.getValue() here
}
Il ciclo foreach presuppone che vi sia una sola raccolta di elementi. Puoi fare qualcosa per ogni elemento per iterazione. Come vorresti che si comportasse così se tu potessi scorrere su due raccolte contemporaneamente? Cosa succede se hanno lunghezze diverse?
Supponendo di avere
Collection<T1> collection1;
Collection<T2> collection2;
Si potrebbe scrivere un wrapper iterabile che scorre su entrambe e restituisce una sorta di risultato unito.
for(TwoThings<T1, T2> thing : new TwoCollectionWrapper(collection1, collection2) {
// one of them could be null if collections have different length
T1 t1 = thing.getFirst();
T2 t2 = thing.getSecond();
}
Questo è il più vicino a ciò a cui riesco a pensare, ma a me non sembra molto utile. Se entrambe le collezioni sono pensate per essere ripetute insieme, sarebbe più semplice creare uno Collection<TwoThings>
in primo luogo.
Oltre a iterare in parallelo, è possibile anche eseguire un'iterazione sequenziale. Esistono implementazioni per questo, ad es. Guava's Iterables.concat()
La semplice risposta "No" è già stata data. Ma potresti implementare prendendo come argomento due iteratori e restituendo coppie di elementi provenienti dai due iteratori. Coppia essere una classe con due campi. Dovresti implementarlo tu stesso, o probabilmente esiste in alcuni commons apache o lib simili.
Questo nuovo Iterator può quindi essere utilizzato nel ciclo foreach.
Il seguente dovrebbe avere lo stesso effetto (performance) che si sta tentando di raggiungere:
List<Item> aItems = new List<Item>();
List<Item> bItems = new List<Item>();
...
Iterator aIterator = aItems.iterator();
Iterator bIterator = bItems.iterator();
while (aIterator.hasNext() && bIterator.hasNext()) {
Item aItem = aIterator.next();
Item bItem = bIterator.next();
}
- 1. GNU Make ciclo for con due variabili
- 2. Due variabili in un ciclo "for" in C
- 3. È possibile dichiarare due variabili di diverso tipo in un ciclo for?
- 4. Variabili di cache in un ciclo `for`
- 5. Perché è così "difficile" scrivere un ciclo for in C++ con 2 variabili di ciclo?
- 6. Due condizioni in un ciclo for
- 7. Ciclo Java foreach con due array
- 8. ciclo For in SCSS con una combinazione di variabili
- 9. è possibile fare riferimento all'array anonimo in un ciclo for?
- 10. ciclo for in thymeleaf
- 11. Java 8: ciclo parallelo FOR
- 12. Ciclo Java For-Each: Ordinamento
- 13. variabili del file batch inizializzate in un ciclo for
- 14. Come utilizzare le variabili in una bash per il ciclo
- 15. Dereferenziare il valore intero di un ciclo for in Java
- 16. Java: inizializzazione di più variabili in for init init?
- 17. Utilizzo di ".." con ciclo for
- 18. Doppio ciclo for in JavaScript
- 19. Problema con JavaScript ciclo For
- 20. ciclo for in Python
- 21. Java: ciclo For-Each e riferimenti
- 22. ciclo For in R con incrementi
- 23. Java - Creazione di più thread con un ciclo For
- 24. È possibile utilizzare dinamicamente i nomi delle variabili in SASS ogni ciclo?
- 25. multithreading in D con ciclo for
- 26. ciclo for convenzioni condizione
- 27. Come utilizzare il ciclo for con una funzione che richiede un campo stringa?
- 28. Java - iterare un ciclo for in un dato ordine
- 29. sostituire due cicli for innestati con Java 8 API
- 30. Come sostituire un ciclo for in Ruby?
non è una 'nuova per loop', è fondamentalmente un ciclo foreach. Non puoi – MightyPork
@ MightyPork È * migliorato per loop *. –
come cambia il nome è scopo e uso? è equivalente al ciclo foreach. – MightyPork