|
Există trei moduri de a parcurge o listă
<A> List list = new <A>ArrayList(); list.add(noul A()); list.add(noul A()); ...
Primul tip: for(<A>Iterator it = list.iterator(); it.hasNext(); ) { .... } Așa este într-un ciclu În același timp, dacă vrei să elimini un element în procesul de plăcere, poți apela doar metoda it.remove, nu poți folosi metoda list.remove, altfel va apărea o eroare de acces concurent. Dar compatibilitatea este cea mai bună, potrivită pentru colecția Colecției
Al doilea tip: for(A a : listă) { ..... } Pentru fiecare metodă este tot un iterator, prima este numită intern, supa nu se schimbă, iar această metodă circulară are alte limitări, așa că nu este recomandată utilizarea ei Poate fi folosit doar peste JK1.5 cu compatibilitate slabă. Cel mai bine este să folosești acesta.
Al treilea tip: for(int i=0; i<list.size(); i++) { A a = list.get(i); ... } pentru buclă, parcurgerea conținutului unei colecții List funcționează doar pentru List, deoarece List este o colecție ordonată , internul nu este blocat, cea mai mare eficiență, dar atunci când scrii multithreading, trebuie luată în considerare problema operațiunilor concurente! Parcurgerea unei colecții Set este la fel ca o listă, dar nu poți folosi o buclă for pentru a itera printr-o colecție Set deoarece nu există metoda get() în colecția set. Dar poate fi repetat cu îmbunătățiri Colecția Traverse the Set Set<String> set = new <String>HashSet(); set.add("qqq"); set.add("www"); set.add("eee"); set.add("rrr");
for(String s : set){ System.out.println("set="+s); }
|