HashMapとは?
JavaのHashMapは、キーと値のペアでデータを格納する連想配列のようなものです。キーを使って値を素早く検索できるため、データの管理に非常に便利です。
HashMapのメリット
- 高速なアクセス: キーに基づいた検索が非常に高速です。
- 柔軟性: キーと値の型を自由に指定できます。
- 動的なサイズ: 要素の追加・削除に伴い、サイズが自動的に調整されます。
HashMapの基本的な使い方
import java.util.HashMap;
import java.util.Map;
public class HashMapExample {
public static void main(String[] args) {
// HashMapの作成 (キーはString型、値はInteger型)
Map<String, Integer> map = new HashMap<>();
// データの追加
map.put("apple", 100);
map.put("banana", 200);
map.put("orange", 150);
// 値の取得
int price = map.get("apple");
System.out.println(price); // 出力: 100
// 全ての要素を表示
for (Map.Entry<String, Integer> entry : map.entrySet()) {
System.out.println(entry.getKey() + ": " + entry.getValue());
}
}
}
HashMapの主なメソッド
- put(K key, V value)
キーと値をマップに追加します。キーが既に存在する場合、その値を上書きします。 - get(Object key)
指定されたキーに対応する値を取得します。キーが存在しない場合はnull
を返します。 - remove(Object key)
指定されたキーと値のペアをマップから削除します。 - containsKey(Object key)
指定されたキーがマップに存在するかどうかを確認します。 - containsValue(Object value)
指定された値がマップ内に存在するかを確認します。 - size()
マップに含まれているキーと値のペアの数を返します。 - isEmpty()
マップが空かどうかを確認します。 - clear()
マップ内のすべてのキーと値を削除します。 - keySet()
マップ内のすべてのキーのリストを取得します。 - values()
マップ内のすべての値のリストを取得します。 - entrySet()
マップ内のすべてのキーと値のペアをまとめて取得します。
keySet()、values()、entrySet()は拡張for文でよく使われます。
拡張for文については、こちらの記事で紹介しています。ぜひ参考にしてみてください!
HashMapを使用する際の注意点
- nullキー: HashMapではnullをキーとして使用できますが、使用できるのは1つだけです。
値にはnullをいくつでも格納できます。 - 重複キー: 同じキーを複数回putすると、最後の値で上書きされます。
HashMapの活用例
- 辞書: 単語をキー、意味を値として格納し、単語の意味を検索する。
- キャッシュ: 計算結果をキー、値として格納し、同じ計算を繰り返すのを避ける。
- ユーザー情報管理: ユーザーIDをキー、ユーザー情報を値として格納する。
HashMapとTreeMapの違い
- キーの順序
HashMapはキーの順序を保証しません。TreeMapはキーを昇順にソートします。 - 性能
HashMapは一般的に高速ですが、TreeMapはキーによる検索は高速ですが、挿入や削除はHashMapよりやや遅い。 - 用途
HashMapは順序を気にせず、高速なアクセスが必要な場合、TreeMapはキーによるソートが必要な場合に適しています。
まとめ
HashMapは、キーと値のペアでデータを管理する上で非常に便利なクラスです。高速なアクセスと柔軟性が特徴で、さまざまな場面で活用できます。TreeMapとの違いを理解し、適切なクラスを選択することで、より効率的なプログラムを作成することができます。
TreeMapに関しては、次の記事で紹介予定です!
コメント