|
Yra trys būdai, kaip pereiti sąrašą
List<A> list = naujas ArrayList<A>(); list.add(naujas A()); list.add(naujas A()); ...
Pirmasis tipas: for(Iterator<A> it = list.iterator(); it.hasNext(); ) { .... } Šis būdas yra cikle Tuo pačiu metu, jei norite pašalinti elementą malonumo procese, galite paskambinti tik it.remove metodu, negalite naudoti list.remove metodo, kitaip įvyks lygiagrečios prieigos klaida. Tačiau suderinamumas yra geriausias, tinka kolekcijos kolekcijai
Antrasis tipas: for(A a : sąrašas) { ..... } Kiekvienam metodui vis dar yra iteratorius, pirmasis vadinamas viduje, o sriuba nekeičiama, o šiam žiediniam metodui yra kitų apribojimų, todėl nerekomenduojama jo naudoti Jis gali būti naudojamas tik virš JK1.5 su prastu suderinamumu Rinkinys yra geriausia naudoti šį
Trečiasis tipas: for(int i=0; i<list.size(); i++) { A a = list.get(i); ... } ciklui, sąrašo rinkinio turinio perėjimas veikia tik sąrašui, nes sąrašas yra sutvarkytas rinkinys , vidinis nėra užrakintas, didžiausias efektyvumas, tačiau rašant kelių gijų reikia atsižvelgti į lygiagrečių operacijų problemą! Perėjimas per rinkinių rinkinį yra tas pats, kaip ir sąrašas, tačiau negalite naudoti ciklo for rinkiniui kartoti, nes rinkinyje nėra metodo get(). Tačiau jį galima sujungti su patobulinimais Pereiti rinkinį Set<String> set = naujas HashSet<String>(); set.add("qqq"); set.add("www"); set.add("eeee"); set.add("rrr");
for(String s : set){ System.out.println("set="+s); }
|