
— Bună, Amigo.
— Hei, Rishi.
"Ellie mi-a spus că vrei mai multe exemple de colecții. Îți voi da câteva. Iată o listă de colecții și interfețe:"
Interfață | Clasa/implementare | Descriere |
---|---|---|
Listă | ArrayList | Listă |
LinkedList | Listă | |
Vector | Vector | |
Grămadă | Grămadă | |
A stabilit | HashSet | A stabilit |
TreeSet | A stabilit | |
SortedSet | Set sortat | |
Hartă | HashMap | Hartă/dicționar |
Harta copacului | Hartă/dicționar | |
SortedMap | Dicționar sortat | |
Hashtable | Masa de hash |
"Hmm. Sunt destul de multe. Patru liste, trei seturi și patru hărți."
„Da, toate sunt implementări diferite ale interfețelor List, Set și Map.”
„Care este diferența dintre aceste implementări?”
„Exact despre asta vom vorbi astăzi. Ai răbdare”.
"Mai ai și alte întrebări?"
" Știu cum să afișez o listă pe ecran. Cum afișez un set sau o hartă?"
„Elementele unei liste au o ordine stabilită, așa că puteți utiliza doar un index pentru a le afișa. Pentru un set sau o hartă, nu există o ordine specifică. De fapt, ordinea elementelor lor se poate schimba pe măsură ce elementele sunt șterse sau noi. articolele sunt adăugate.”
"Uimitor."
„De aceea, obiectele speciale, numite iteratoare , au fost inventate pentru a lucra cu elemente de colecție. Vă permit să parcurgeți toate elementele dintr-o colecție, chiar dacă au doar nume în loc de indici (Hartă), sau nici nume, nici indici ( A stabilit)."
"Aici sunt cateva exemple:"
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);
}
}
— Uau. Mă întreb ce înseamnă toate astea.
„De fapt, este destul de simplu. În primul rând, obținem un obiect special, un iterator, din colecție. Iteratorul are doar două metode.
1. Metoda next() returnează următorul element din colecție.
2. Metoda hasNext() verifică dacă există încă elemente care nu au fost returnate de next()."
"OK. Cred că acum devine mai clar. Lasă-mă să încerc să-ți repet ceea ce am înțeles."
"Deci... În primul rând, trebuie să apelăm metoda iterator() pe o colecție pentru a obține acest obiect iterator magic."
„Atunci obținem elemente unul câte unul, atâta timp cât mai sunt de obținut. Obținem următorul element din colecție apelând next() și verificăm dacă mai există elemente în colecție apelând hasNext() pe iterator. Este corect?"
"Da, mai mult sau mai puțin. Dar așteptați partea bună."
"Java are notație prescurtată pentru lucrul cu iteratoare. Urmând modelul while și for , a fost adăugată încă o declarație specială: pentru fiecare . Este, de asemenea, indicată folosind cuvântul cheie pentru ."
„Instrucțiunea for-each este folosită doar pentru lucrul cu colecții și containere. Folosește implicit un iterator, dar vedem doar elementul returnat.”
„Permiteți-mi să vă arăt modalitățile de a lucra cu un iterator:”
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);
}
}
„Rețineți că cuvintele evidențiate cu roșu sau verde sunt absente în partea dreaptă. De fapt, trei linii sunt înlocuite cu una:”
Iterator<String> iterator = set.iterator();
while (iterator.hasNext())
{
String text = iterator.next();
for (String text : set)
"Arata superb. Îmi place mult mai mult în acest fel."
„Să ne uităm la versiunea scurtă a exemplelor de mai sus:”
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);
}
}
— Acum vorbeşti!
"Ma bucur ca ti-a placut."
GO TO FULL VERSION