|
Ir trīs veidi, kā šķērsot sarakstu
List<A> list = new ArrayList<A>(); list.add(jauns A()); list.add(jauns A()); ...
Pirmais veids: for(Iterator<A> it = list.iterator(); it.hasNext(); ) { .... } Šis veids ir ciklā Tajā pašā laikā, ja vēlaties noņemt elementu prieka procesā, varat izsaukt tikai to.noņemt metodi, jūs nevarat izmantot list.remove metodi, pretējā gadījumā radīsies vienlaicīgas piekļuves kļūda. Bet saderība ir vislabākā, piemērota kolekcijas kolekcijai
Otrais veids: for(A a : saraksts) { ..... } Katrai metodei joprojām ir iterators, pirmais tiek saukts iekšēji, un zupa netiek mainīta, un šai apļveida metodei ir citi ierobežojumi, tāpēc nav ieteicams to izmantot To var izmantot tikai virs JK1.5 ar sliktu saderību Vislabāk ir izmantot šo
Trešais veids: for(int i=0; i<list.size(); i++) { A a = list.get(i); ... } cilpai Saraksta kolekcijas satura šķērsošana darbojas tikai Sarakstam, jo Saraksts ir sakārtota kolekcija , iekšējais nav bloķēts, visaugstākā efektivitāte, bet, rakstot multithreading, jāapsver vienlaicīgu operāciju problēma! Kopu kolekcijas šķērsošana ir tāda pati kā saraksta šķērsošana, taču nevar izmantot cilpu for, lai atkārtotu kopu kolekciju, jo kopu kolekcijā nav metodes get(). Bet to var cilpināt ar uzlabojumiem Šķērsojiet komplektu kolekciju Set<String> set = jauns HashSet<String>(); set.add("qqq"); set.add("www"); set.add("eee"); set.add("rrr");
for(Virkne s : set){ System.out.println("set="+s); }
|