
"Hai, Amigo."
"Hei, Resi."
"Ellie bilang kamu ingin lebih banyak contoh koleksi. Aku akan memberimu beberapa. Ini daftar koleksi dan antarmuka:"
Antarmuka | Kelas/implementasi | Keterangan |
---|---|---|
Daftar | ArrayList | Daftar |
LinkedList | Daftar | |
Vektor | Vektor | |
Tumpukan | Tumpukan | |
Mengatur | HashSet | Mengatur |
TreeSet | Mengatur | |
SortedSet | Diurutkan diatur | |
Peta | HashMap | Peta/kamus |
Peta Pohon | Peta/kamus | |
SortedMap | Kamus yang diurutkan | |
Hashtable | Tabel hash |
"Hmm. Cukup banyak. Empat daftar, tiga set, dan empat peta."
"Ya, mereka semua adalah implementasi berbeda dari antarmuka Daftar, Set, dan Peta."
"Apa perbedaan antara implementasi ini?"
"Itulah tepatnya yang akan kita bicarakan hari ini. Sabar saja."
"Apakah kamu punya pertanyaan lain?"
"Saya tahu cara menampilkan daftar di layar. Bagaimana cara menampilkan Set atau Peta?"
"Elemen Daftar memiliki urutan yang ditetapkan, jadi Anda bisa menggunakan indeks untuk menampilkannya. Untuk Set atau Peta, tidak ada urutan khusus. Faktanya, urutan elemennya dapat berubah saat item dihapus atau baru item ditambahkan."
"Luar biasa."
"Inilah sebabnya objek khusus, yang disebut iterators , diciptakan untuk bekerja dengan elemen koleksi. Mereka memungkinkan Anda menelusuri semua elemen dalam koleksi, bahkan jika mereka hanya memiliki nama, bukan indeks (Peta), atau tidak ada nama maupun indeks ( Mengatur)."
"Ini beberapa contohnya:"
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. Aku ingin tahu apa artinya semua itu."
"Ini sebenarnya cukup sederhana. Pertama, kita mendapatkan objek khusus, sebuah iterator, dari koleksi. Iterator hanya memiliki dua metode.
1. Metode next() mengembalikan elemen berikutnya dalam koleksi.
2. Metode hasNext() memeriksa apakah masih ada elemen yang belum dikembalikan oleh next()."
"Oke. Saya pikir sekarang sudah semakin jelas. Izinkan saya mencoba mengulang apa yang saya pahami."
"Jadi... Pertama, kita perlu memanggil metode iterator() pada koleksi untuk mendapatkan objek magic iterator ini."
"Kemudian kita mendapatkan elemen satu per satu selama masih ada yang tersisa. Kita mendapatkan elemen berikutnya dalam koleksi dengan memanggil next(), dan kita memeriksa apakah masih ada elemen dalam koleksi dengan memanggil hasNext() pada iterator. Apakah itu benar?"
"Ya, kurang lebih. Tapi tunggu bagian baiknya."
"Java memiliki notasi steno untuk bekerja dengan iterator. Mengikuti pola while dan for , satu lagi pernyataan khusus telah ditambahkan: for each . Itu juga ditunjukkan dengan menggunakan kata kunci for ."
"Pernyataan for-each hanya digunakan untuk bekerja dengan koleksi dan wadah. Ia menggunakan iterator secara implisit, tetapi kita hanya melihat elemen yang dikembalikan."
"Biar saya tunjukkan cara singkat dan cepat untuk bekerja dengan 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);
}
}
"Perhatikan bahwa kata-kata yang disorot dengan warna merah atau hijau tidak ada di bagian kanan. Faktanya, tiga baris diganti dengan satu:"
Iterator<String> iterator = set.iterator();
while (iterator.hasNext())
{
String text = iterator.next();
for (String text : set)
"Ini terlihat cantik. Aku lebih suka seperti ini."
"Mari kita lihat versi singkat dari contoh di atas:"
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);
}
}
"Sekarang kamu bicara!"
"Aku senang kamu menyukainya."
GO TO FULL VERSION