第15章 ArrayListとHashMap
この章では、JavaのArrayListとHashMapについて説明します
homepage
# **ArrayListとHashMap** *** ## **1.ArrayListクラス** ArrayListクラスはサイズの変更が可能な配列を実装したクラスです。ArrayListは「java.util.ArrayList」のようにjava.utilクラス内で定義されています。 ### **・定義:** ``` ArrayList<型> 変数名 = new ArrayList<型>(); ``` 型の部分にはクラス名を指定します。 ここで指定したクラスのオブジェクトを要素として格納できるようになります。 注意して頂きたいのはStringは大丈夫ですがintやfloatは指定できません。これはStringはStringクラスなのですけどintやfloatはクラスでは無く基本型と呼ばれるものだからです。 そこでint型やfloat型などの基本型を扱いたい場合には、各基本型に対応したクラス(**ラッパークラス**といいます)が用意されていますので、それを利用します。 ※各基本型に対応したクラス <table border="1" > <tr style="width:100px ;background-color:#C6E0B4 ;text-align:center;"> <td>ラッパークラス</td> <td>基本データ型</td> </tr> <tr> <td>Boolean</td> <td>boolean</td> </tr> <tr> <td>Character</td> <td>char</td> </tr> <tr> <td>Byte</td> <td>byte</td> </tr> <tr> <td>Short</td> <td>short</td> </tr> <tr> <td>Integer</td> <td>int</td> </tr> <tr> <td>Long</td> <td>long</td> </tr> <tr> <td>Float</td> <td>float</td> </tr> <tr> <td>Doubule</td> <td>double</td> </tr> </table> <br> #### **例** ``` ArrayList<Integer> array1 = new ArrayList<Integer>(); ArrayList<String> array2 = new ArrayList<String>(); ``` <br> ### **・値の格納** ArrayListクラスのオブジェクトを作成したら、実際に要素を追加します。ArrayListクラスで用意されている"add"メソッドを使います。 >public boolean add(E o) リストの最後に、指定された要素を追加します。 **パラメータ:** o - リストに追加される要素 **戻り値:** true <br> #### **例** ``` ArrayList<String> array1 = new ArrayList<String>(); array1.add("日本"); array1.add("中国"); array1.add("韓国"); ``` ``` ArrayList<Integer> array2 = new ArrayList<Integer>(); array2.add(1); array2.add(2); array2.add(3); ``` <br> #### **・ArrayListクラスで利用できる主なメソッド** <table border="1" > <tr style="width:100px ;background-color:#C6E0B4 ;text-align:center;"> <td>メソッド</td> <td>概要</td> </tr> <tr> <td>add([int index,] E e)</td> <td>指定位置indexに要素eを挿入(index省略で末尾に挿入)</td> </tr> <tr> <td>clear()</td> <td>リストからすべての要素を削除</td> </tr> <tr> <td>contains(Object e)</td> <td>リストに要素eが含まれているかを判定</td> </tr> <tr> <td>get(int index)</td> <td>index番目の要素を取得</td> </tr> <tr> <td>indexOf(Object e)</td> <td>要素eが登場する最初のインデックス値を取得</td> </tr> <tr> <td>isEmpty()</td> <td>リストが空か判定</td> </tr> <tr> <td>remove(int index|Object o)</td> <td>指定の要素を削除</td> </tr> <tr> <td>set(int index, E e)</td> <td>index番目の要素を設定</td> </tr> <tr> <td>int size()</td> <td>リストに含まれる要素の数を取得</td> </tr> </table> <br> #### **例** [JSample15_1.java] <pre><code>package JSample; import java.util.ArrayList; public class JSample15_2{ public static void main(String args[]) { ArrayList<String> al = new ArrayList<String>(); al.add("バナナ"); al.add("葡萄"); al.add("梨"); al.add("イチゴ"); al.add("リンゴ"); System.out.println("登録したデータの数:" + al.size() + "個"); for (int i = 0; i < al.size(); i++) { String out = al.get(i); System.out.println(out); } System.out.println("一番名の果物をイチゴへ置き換えます"); al.set(0, "イチゴ"); al.set(3, "バナナ"); for (int i = 0; i < al.size(); i++) { String out = al.get(i); System.out.println(out); } } } </code></pre> #### **実行結果** 登録したデータの数:5個<br> バナナ<br> 葡萄<br> 梨<br> イチゴ<br> リンゴ<br> 一番名の果物をイチゴへ置き換えます<br> イチゴ<br> 葡萄<br> 梨<br> バナナ<br> リンゴ <br> ## **2.HashMapクラス** キー/値のペアを表すマップ – HashMapクラスマップは、リストやセット、キューと異なり、キーと値の組み合わせで要素を管理します。HashMapは、マップの実装クラスの中でも最も基本的なクラスです。キーは重複できず、また順番を持ちません。 <br> ### **・定義:** >HashMap<型1,型2> 変数名 = new HashMap<型1,型2>(); HashMapの場合は型を2つ指定します。1つ目はキーの型、2つ目は格納する要素の型となります。例えばキーをInteger型、要素をString型とした場合は下記のような感じとなります。 >HashMap<Integer,String> map = new HashMap<Integer,String>(); <br> ### **・キー要素** ------------------- 1000 テレビ<br> 1001 ビデオ<br> 2000 エアコン<br> ### **・HashMapクラスの主なメソッド** <table border="1" > <tr style="width:100px ;background-color:#C6E0B4 ;text-align:center;"> <td>メソッド</td> <td>概要</td> </tr> <tr> <td>clear()</td> <td>すべての要素を削除</td> </tr> <tr> <td>containsKey(Object key)</td> <td>キーkeyがマップに含まれているかを判定</td> </tr> <tr> <td>containsValue(Object value)</td> <td>値valueがマップに含まれているかを判定</td> </tr> <tr> <td>get(Object key)</td> <td>キーkeyに対応する値を取得</td> </tr> <tr> <td>isEmpty()</td> <td>マップが空かを判定</td> </tr> <tr> <td>keySet()</td> <td>すべてのキーを取得</td> </tr> <tr> <td>put(K key, V value)</td> <td>指定されたキー/値の組み合わせを追加</td> </tr> <tr> <td>remove(Object key)</td> <td>指定のキーを削除</td> </tr> <tr> <td>int size()</td> <td>マップの要素数を取得</td> </tr> <tr> <td>Collection<V> values()</td> <td>すべての値を取得</td> </tr> </table> <br> #### **例** [JSample15_2.java] <pre><code>package JSample; import java.util.HashMap; public class JSample15_2{ public static void main(String args[]) { HashMap<String, String> map = new HashMap<String, String>(); map.put("バナナ", "香蕉"); map.put("リンゴ", "苹果"); map.put("イチゴ", "草莓"); if (map.containsKey("バナナ")) { System.out.println("バナナを中国語にすると:"); System.out.println(map.get("バナナ")); } else { System.out.println("検索したい果物は存在しません。"); } } } </code></pre> #### **実行結果** バナナを中国語にすると:<br> 香蕉 *** > **練習** >> **問題**[JEx15_1.java] ArrayListで提供されたStudentクラスを利用して、下記の結果を作成ください。 <pre> <iframe src="javascript:'<html> 番号:1 名前: 佐藤 純一<br> 番号:2 名前: 田中 太郎 </html>'"></iframe> </pre> ``` class Student { // 名前 private String name; // 番号 private int number; //コンストラクタ public Student(String name,int number){ this.name = name; this.number = number; } // 名前の取得 public String getName() { return name; } // 名前のセット public void setName(String name) { this.name = name; } // 番号の取得 public int getNumber() { return number; } // 番号のセット public void setNumber(int number) { this.number = number; } } ```
content
戻る