"Hai, Amigo."
"Hei, Rishi."
"Ellie memberitahu saya anda mahukan lebih banyak contoh koleksi. Saya akan memberikan anda beberapa. Berikut ialah senarai koleksi dan antara muka:"
Antara muka | Kelas/pelaksanaan | Penerangan |
---|---|---|
Senaraikan | ArrayList | Senaraikan |
LinkedList | Senaraikan | |
vektor | vektor | |
Timbunan | Timbunan | |
Tetapkan | HashSet | Tetapkan |
TreeSet | Tetapkan | |
SortedSet | Set diisih | |
Peta | HashMap | Peta/kamus |
Peta Pokok | Peta/kamus | |
Peta Isih | Kamus yang diisih | |
Hashtable | Hash-table |
"Hmm. Agak banyak. Empat senarai, tiga set, dan empat peta."
"Ya, semuanya adalah pelaksanaan berbeza bagi antara muka Senarai, Set dan Peta."
"Apakah perbezaan antara pelaksanaan ini?"
"Itu betul-betul apa yang kita akan bincangkan hari ini. Sabar sahaja."
"Ada apa-apa soalan lain?"
" Saya tahu bagaimana untuk memaparkan senarai pada skrin. Bagaimanakah cara untuk saya memaparkan Set atau Peta?"
"Elemen Senarai mempunyai susunan yang ditetapkan, jadi anda hanya boleh menggunakan indeks untuk memaparkannya. Untuk Set atau Peta, tiada susunan khusus. Malah, susunan elemennya boleh berubah apabila item dipadamkan atau baharu item ditambah."
"Menakjubkan."
"Inilah sebabnya objek khas, dipanggil iterator , dicipta untuk berfungsi dengan elemen koleksi. Mereka membenarkan anda menelusuri semua elemen dalam koleksi, walaupun jika objek tersebut hanya mempunyai nama dan bukannya indeks (Peta), atau bukan nama mahupun indeks ( Tetapkan)."
"Berikut adalah beberapa contoh:"
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);
}
}
"Wah. Saya tertanya-tanya apa maksud semua itu."
"Ia sebenarnya agak mudah. Pertama, kita mendapat objek khas, iterator, daripada koleksi. Iterator hanya mempunyai dua kaedah.
1. Kaedah next() mengembalikan elemen seterusnya dalam koleksi.
2. Kaedah hasNext() menyemak sama ada masih terdapat elemen yang belum dikembalikan oleh next()."
"OK. Saya rasa ia semakin jelas sekarang. Biar saya cuba ulang balik kepada awak apa yang saya faham."
"Jadi... Mula-mula, kita perlu memanggil kaedah iterator() pada koleksi untuk mendapatkan objek lelaran ajaib ini."
"Kemudian kami mendapat elemen satu demi satu selagi masih ada lagi. Kami mendapatkan elemen seterusnya dalam koleksi dengan memanggil next(), dan kami menyemak sama ada masih terdapat elemen dalam koleksi dengan memanggil hasNext() pada iterator. Betul ke?"
"Ya, lebih kurang. Tetapi tunggu bahagian yang baik."
"Java mempunyai notasi trengkas untuk bekerja dengan iterator. Mengikut corak while dan for , satu lagi pernyataan khas telah ditambah: untuk setiap . Ia juga ditunjukkan menggunakan kata kunci untuk ."
"Pernyataan untuk setiap satu hanya digunakan untuk bekerja dengan koleksi dan bekas. Ia menggunakan lelaran secara tersirat, tetapi kami hanya melihat elemen yang dikembalikan."
"Biar saya tunjukkan kepada anda cara panjang dan singkat 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 bahawa perkataan yang diserlahkan dalam warna merah atau hijau tiada di bahagian kanan. Malah, tiga baris digantikan dengan satu:"
Iterator<String> iterator = set.iterator();
while (iterator.hasNext())
{
String text = iterator.next();
for (String text : set)
"Ini kelihatan cantik. Saya lebih suka dengan cara ini."
"Mari kita lihat versi ringkas 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 awak bercakap!"
"Saya gembira anda menyukainya."
GO TO FULL VERSION