|
Er zijn drie manieren om een lijst te doorkruisen
Lijst<A> lijst = nieuwe ArrayList<A>(); list.add (nieuwe A()); list.add (nieuwe A()); ...
Het eerste type: for(Iterator<A> it = list.iterator(); it.hasNext(); ) { .... } Deze weg zit in een cyclus Tegelijkertijd, als je een element wilt verwijderen in het proces van plezier, kun je alleen de it.remove methode aanroepen, je kunt de list.remove methode niet gebruiken, anders is er een fout bij gelijktijdige toegang. Maar de compatibiliteit is het beste, geschikt voor de collectie
Het tweede type: for(A a : lijst) { ..... } De voor elke methode is nog steeds een iterator, de eerste wordt intern genoemd, en de soep wordt niet veranderd, en er zijn andere beperkingen aan deze circulaire methode, dus het wordt niet aanbevolen deze te gebruiken Het kan alleen boven JK1.5 worden gebruikt met slechte compatibiliteit. Set is het beste om deze te gebruiken.
Het derde type: voor(int i=0; i<list.size(); i++) { A a = list.get(i); ... } voor loop, werkt het doorlopen van de inhoud van een List-collectie alleen voor List, omdat List een geordende verzameling is , de interne is niet vergrendeld, de hoogste efficiëntie, maar bij het schrijven van multithreading moet het probleem van gelijktijdige bewerkingen worden meegenomen! Het doorlopen van een Set-collectie is hetzelfde als een List, maar je kunt geen for-lus gebruiken om door een Set-collectie heen te itereren omdat er geen get()-methode is in de Set-collectie. Maar het kan wel worden geloopt met verbeteringen Doorkruis de verzameling van de Set. Set<String> set = nieuwe HashSet<String>(); set.add("qqq"); set.add("www"); set.add("eee"); set.add("rrr");
for(String s : set){ System.out.println("set="+s); }
|