「こんにちは、アミーゴ」
「やあ、リシ」
「エリーが、もっとコレクションの例が欲しいと言っていました。いくつか紹介します。コレクションとインターフェイスのリストは次のとおりです。」
インターフェース | クラス/実装 | 説明 |
---|---|---|
リスト | 配列リスト | リスト |
リンクリスト | リスト | |
ベクター | ベクター | |
スタック | スタック | |
設定 | ハッシュセット | 設定 |
ツリーセット | 設定 | |
ソートセット | ソートされたセット | |
地図 | ハッシュマップ | 地図・辞書 |
ツリーマップ | 地図・辞書 | |
ソートマップ | 分類された辞書 | |
ハッシュ表 | ハッシュ表 |
「うーん。かなり多いですね。リストが 4 つ、セットが 3 つ、マップが 4 つです。」
「はい、それらはすべて List、Set、Map インターフェイスの異なる実装です。」
「これらの実装の違いは何ですか?」
「まさにそれが今日私たちが話そうとしていることです。ちょっと待ってください。」
「他にご質問はありますか?」
「画面にリストを表示する方法は知っていますが、セットやマップを表示するにはどうすればよいですか?」
「リストの要素には順序が設定されているため、インデックスを使用するだけで要素を表示できます。セットまたはマップの場合、特定の順序はありません。実際、要素の順序は、項目が削除または新規作成されると変更される可能性があります」アイテムが追加されます。」
"すばらしい。"
「これが、コレクション要素を操作するためにイテレーターと呼ばれる特別なオブジェクトが発明された理由です。これらのオブジェクトを使用すると、インデックス (Map) の代わりに名前だけがある場合や、名前もインデックスも持たない場合でも、コレクション内のすべての要素を調べることができます (設定)。"
"ここではいくつかの例を示します:"
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);
}
}
「うわー。どういう意味だろう。」
「実際には非常に単純です。まず、コレクションから特別なオブジェクトであるイテレータを取得します。イテレータには 2 つのメソッドしかありません。
1. next() メソッドは、コレクション内の次の要素を返します。
2. hasNext() メソッドは、next() によって返されていない要素がまだあるかどうかを確認します。
「わかりました。だいぶ明確になってきたと思います。私が理解した内容をもう一度繰り返してみます。」
「だから... まず、コレクションに対して iterator() メソッドを呼び出して、この魔法の反復子オブジェクトを取得する必要があります。」
「次に、取得すべき要素が残っている限り、要素を 1 つずつ取得します。 next() を呼び出してコレクション内の次の要素を取得し、コレクション内に hasNext() を呼び出して要素がまだあるかどうかを確認します。イテレーター。そうですか?」
「はい、多かれ少なかれそうです。しかし、良い部分を待ってください。」
「Java にはイテレータを操作するための簡略記法があります。 whileとforのパターンに従って、もう 1 つの特別なステートメント、 for eachが追加されました。これは、キーワードforを使用して示されます。」
「for-each ステートメントは、コレクションとコンテナーを操作する場合にのみ使用されます。暗黙的にイテレーターを使用しますが、返された要素のみが表示されます。」
「反復子を操作するための簡潔な方法と簡略的な方法を示しましょう。」
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);
}
}
「赤または緑で強調表示された単語が右側の部分にないことに注意してください。実際には、3 行が 1 行に置き換えられます。」
Iterator<String> iterator = set.iterator();
while (iterator.hasNext())
{
String text = iterator.next();
for (String text : set)
「これはゴージャスですね。私はこっちの方がずっと好きです。」
「上記の例の短縮版を見てみましょう。」
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);
}
}
"今あなたが話している!"
"気に入ってもらってうれしいです。"
GO TO FULL VERSION