Javaコレクションフレームワークの概要
Javaのコレクションフレームワークは主に以下の2つのカテゴリに分類されます:
Collectionインターフェース: 単一要素のコレクション
Listインターフェース: 順序あり、重複可能なデータ
→ ArrayList, LinkedList, Vector
Setインターフェース: 順序なし、重複不可のデータ
→ HashSet, TreeSet, LinkedHashSet
Mapインターフェース: キーと値のペアを格納
→ HashMap, LinkedHashMap, TreeMap, Hashtable
HashMapの基本操作
HashMapはMapインターフェースを実装したクラスで、キーと値のペアを格納します。内部的には配列とリンクリストの組み合わせで実装されています。
基本的なメソッドの使用例
HashMap<Integer, String> map = new HashMap<>();
// 要素の追加
map.put(101, "田中");
map.put(102, "佐藤");
map.put(103, "鈴木");
map.put(104, "鈴木"); // 値の重複は可能
map.put(105, ""); // 空文字も格納可能
// 要素の取得
String value = map.get(102);
System.out.println(value); // 佐藤
// 要素の更新
map.replace(103, "山田");
// 要素の削除
map.remove(101);
// サイズ確認
System.out.println(map.size());
// キーと値の存在確認
if (map.containsKey(104)) {
System.out.println("キー104が存在します");
}
if (map.containsValue("鈴木")) {
System.out.println("値「鈴木」が存在します");
}
HashMapの要素走査方法
// 方法1: EntrySetを使用した走査
for (Map.Entry<Integer, String> entry : map.entrySet()) {
System.out.println("キー: " + entry.getKey());
System.out.println("値: " + entry.getValue());
}
// 方法2: キーセットを使用した走査
for (Integer key : map.keySet()) {
System.out.println("キー: " + key);
System.out.println("値: " + map.get(key));
}
// 値のみの走査
for (String val : map.values()) {
System.out.println("値: " + val);
}
ArrayListの基本操作
ArrayListは動的にサイズが変更可能な配列で、AbstractListを継承しListインターフェースを実装しています。順序を保持し、重複要素を許可します。
基本的なメソッドの使用例
ArrayList<Integer> list = new ArrayList<>();
// 要素の追加
list.add(500);
list.add(200);
list.add(800);
list.add(800); // 重複可能
// 要素の取得
int lastElement = list.get(list.size() - 1);
// 要素の削除
list.remove(2); // インデックス2の要素を削除
// コレクションのソート
Collections.sort(list); // 昇順ソート
// サイズ確認
System.out.println("リストサイズ: " + list.size());
ArrayListの要素走査方法
// 拡張for文を使用した走査
for (int num : list) {
System.out.println("要素: " + num);
}
// インデックスを使用した走査
for (int i = 0; i < list.size(); i++) {
System.out.println("要素" + i + ": " + list.get(i));
}