|
Három módja van a listán való áthaladásnak
List<A> list = új ArrayList<A>(); list.add(új A()); list.add(új A()); ...
Az első típus: for(Iterator<A> it = list.iterator(); it.hasNext(); ) { .... } Ez az út egy ciklusban van Ugyanakkor, ha egy elemet szeretnél eltávolítani az élvezet folyamatából, csak az it.remove metódupontot hívhatod, nem használhatod a list.remove metódust, különben egyidejű hozzáférési hiba következik. De a kompatibilitás a legjobb, illik a Gyűjtemény gyűjteményéhez
A második típus: for(A a : lista) { ..... } Minden módszerhez még mindig iterátor, az elsőt belső hívják, a leves nem változik, és ennek a körkörös módszernek vannak más korlátai, ezért nem ajánlott használni Csak JK1.5 felett használható, ha kompatibilitás nem volt gyenge, a Set a legjobb ezt használni
A harmadik típus: for(int i=0; i<list.size(); i++) { A a = list.get(i); ... } for loop, a List gyűjtemény tartalmán való áthaladás csak a List-nél működik, mert a List egy rendezett gyűjtemény , a belső nem zárolva, ami a legmagasabb hatékonyság, de a többszálas műveletek írása során figyelembe kell venni az egyidejű műveletek problémáját! A Set gyűjtemény áthaladása ugyanúgy történik, mint egy Listában, de nem használhatsz for hurkot a Set gyűjtemény iterációjához, mert nincs get() módszer a Set gyűjteményben. De fejleszthető, de lehet újraforgatni Áthaladás a Készlet gyűjteményében Set<String> set = új HashSet<String>(); set.add("qqq"); set.add("www"); set.add("eee"); set.add("rrr");
for(String s : set){ System.out.println("set="+s); }
|