
– Szia Amigo.
– Szia Rishi.
"Ellie azt mondta, hogy több példát szeretne a gyűjteményekről. Mondok néhányat. Itt van a gyűjtemények és felületek listája:
Felület | Osztály/megvalósítás | Leírás |
---|---|---|
Lista | Tömb lista | Lista |
LinkedList | Lista | |
Vektor | Vektor | |
Kazal | Kazal | |
Készlet | HashSet | Készlet |
TreeSet | Készlet | |
SortedSet | Rendezett készlet | |
Térkép | HashMap | Térkép/szótár |
TreeMap | Térkép/szótár | |
Rendezett térkép | Rendezett szótár | |
Hashtable | Hash-tábla |
"Hmm. Ez elég sok. Négy lista, három készlet és négy térkép."
"Igen, ezek mind a List, Set és Map interfészek különböző megvalósításai."
"Mi a különbség ezek között a megvalósítások között?"
– Pontosan erről fogunk ma beszélni. Csak légy türelmes.
– Van még kérdése?
" Tudom, hogyan kell megjeleníteni egy listát a képernyőn. Hogyan jeleníthetek meg egy készletet vagy térképet?"
"A lista elemeinek beállított sorrendje van, így csak egy index segítségével jelenítheti meg őket. A készlet vagy a térkép esetében nincs meghatározott sorrend. Valójában az elemek sorrendje változhat, ahogy az elemek törlődnek vagy újak lesznek. tételek hozzáadva."
"Elképesztő."
"Ezért találták ki a speciális objektumokat, az úgynevezett iterátorokat , hogy a gyűjteményelemekkel dolgozzanak. Lehetővé teszik a gyűjtemény összes elemének végigfutását, még akkor is, ha indexek helyett csak nevek vannak (Térkép), vagy sem nevek, sem indexek ( Készlet)."
"Íme néhány példa:"
public static void main(String[] args)
{
Set<String> set = new HashSet<String>();
set.add("Rain");
set.add("In");
set.add("Spain");
// Get an iterator for the set
Iterator<String> iterator = set.iterator();
while (iterator.hasNext()) // Check if there is another element
{
// Get the current element and move to the next one
String text = iterator.next();
System.out.println(text);
}
}
public static void main(String[] args)
{
List<String> list = new ArrayList<String>();
list.add("Rain");
list.add("In");
list.add("Spain");
Iterator<String> iterator = list.iterator();// Get an iterator for the list
while (iterator.hasNext()) // Check if there is another element
{
// Get the current element and move to the next one
String text = iterator.next();
System.out.println(text);
}
}
public static void main(String[] args)
{
// All elements are stored in pairs
Map<String, String> map = new HashMap<String, String>();
map.put("first", "Rain");
map.put("second", "In");
map.put("third", "Spain");
Iterator<Map.Entry<String, String>> iterator = map.entrySet().iterator();
while (iterator.hasNext())
{
// Get a key-value pair
Map.Entry<String, String> pair = iterator.next();
String key = pair.getKey(); // Key
String value = pair.getValue(); // Value
System.out.println(key + ":" + value);
}
}
"Wow. Kíváncsi vagyok, mit jelent ez az egész."
"Valójában nagyon egyszerű. Először is kapunk egy speciális objektumot, egy iterátort a gyűjteményből. Az iterátornak csak két módszere van.
1. A next() metódus a gyűjtemény következő elemét adja vissza.
2. A hasNext() metódus ellenőrzi, hogy vannak-e még olyan elemek, amelyeket a next() nem adott vissza."
"Rendben. Azt hiszem, most már világosabb. Hadd próbáljam meg ismételni, amit megértettem."
"Szóval... Először is meg kell hívnunk az iterator() metódust egy gyűjteményben, hogy megkapjuk ezt a varázslatos iterátor objektumot."
"Ezután egyenként kapjuk meg az elemeket, ameddig van még beszerezni. A next() meghívásával megkapjuk a gyűjtemény következő elemét, és a hasNext() meghívásával ellenőrizzük, hogy vannak-e még elemek a gyűjteményben. iterátor. Helyes?"
– Igen, többé-kevésbé. De várd meg a jó részt.
"A Java-nak van gyorsított jelölése az iterátorokkal való munkavégzéshez. A while és a for mintáját követve egy további speciális utasítás került hozzáadásra: mindegyikhez . A for kulcsszó használatával is jelezzük ."
"A for-each utasítás csak gyűjteményekkel és tárolókkal való munkához használható. Implicit módon iterátort használ, de csak a visszaadott elemet látjuk."
"Hadd mutassam meg az iterátorral való munka hosszú és gyorsírási módjait:"
public static void main(String[] args)
{
Set<String> set = new HashSet<String>();
set.add("Rain");
set.add("In");
set.add("Spain");
Iterator<String> iterator = set.iterator();
while (iterator.hasNext())
{
String text = iterator.next();
System.out.println(text);
}
}
public static void main(String[] args)
{
Set<String> set = new HashSet<String>();
set.add("Rain");
set.add("In");
set.add("Spain");
for (String text : set)
{
System.out.println(text);
}
}
"Ne feledje, hogy a piros vagy zöld színnel kiemelt szavak hiányoznak a jobb oldali részből. Valójában három sor helyére egy kerül:"
Iterator<String> iterator = set.iterator();
while (iterator.hasNext())
{
String text = iterator.next();
for (String text : set)
"Ez pompásan néz ki. Sokkal jobban szeretem így."
"Nézzük meg a fenti példák rövidített változatát:"
public static void main(String[] args)
{
Set<String> set = new HashSet<String>();
set.add("Rain");
set.add("In");
set.add("Spain");
for (String text : set)
{
System.out.println(text);
}
}
public static void main(String[] args)
{
List<String> list = new ArrayList<String>();
list.add("Rain");
list.add("In");
list.add("Spain");
for (String text : list)
{
System.out.println(text);
}
}
public static void main(String[] args)
{
Map<String, String> map = new HashMap<String, String>();
map.put("first", "Rain");
map.put("second", "In");
map.put("third", "Spain");
for (Map.Entry<String, String> pair : map.entrySet())
{
String key = pair.getKey(); // Key
String value = pair.getValue(); // Value
System.out.println(key + ":" + value);
}
}
– Most te beszélsz!
"Örülök, hogy tetszett."
GO TO FULL VERSION