|
Existujú tri spôsoby, ako prechádzať Zoznamom
List<A> list = nový ArrayList<A>(); list.add(nový A()); list.add(nový A()); ...
Prvý typ: for(Iterator<A> it = list.iterator(); it.hasNext(); ) { .... } Týmto spôsobom je to v cykle Zároveň, ak chcete odstrániť prvok v procese potešenia, môžete volať iba metódu it.remove (it.remove metódu), nemôžete použiť metódu list.eseue, inak vznikne chyba súbežného prístupu. Ale kompatibilita je najlepšia, vhodná pre kolekciu Collection
Druhý typ: for(A a : list) { ..... } Pre každú metódu je stále iterátor, prvý sa volá interne, polievka sa nemení, pričom táto kruhová metóda má aj iné obmedzenia, preto sa neodporúča ju používať Dá sa používať len nad JK1.5 s nízkou kompatibilitou. Najlepšie je použiť tento
Tretí typ: for(int i=0; i<list.size(); i++) { A a = list.get(i); ... } pre slučku funguje prechádzanie obsahom kolekcie List len pre List, pretože List je usporiadaná kolekcia , interné nie je uzamknuté, čo je najvyššia efektivita, ale pri písaní viacvláknového procesu by sa mal zvážiť problém súbežných operácií! Prechádzanie kolekciou Setov je to isté ako List, ale nemôžeš použiť for cyklus na iteráciu cez kolekciu Setov, pretože v kolekcii Set nie je metóda get(). Ale dá sa to slučkovať s vylepšeniami Kolekcia Traverse the Set Set<String> set = nový HashSet<String>(); set.add("qqq"); set.add("www"); set.add("eee"); set.add("rrr");
for(String s : set){ System.out.println("set="+s); }
|