Java Map/HashMapよくある使い方
2009/02/12 17:18更新
Mapは、「キー」と「値」のペアになる要素を持ったデータ構造です。
Map関連主なインタフェースやクラス
java.util.Map [I]
∟java.util.HashMap
∟java.util.LinkedHashMap
∟java.util.Hashtable
∟java.util.Properties
∟java.util.SortedMap [I]
∟java.util.TreeMap
本文はjava.util.Map/java.util.HashMapの基本的な使い方を紹介します。
次のサンプルは、HashMapから生成されたMapインスタンスに要素の追加、Mapから要素の取得・削除などについて簡単に説明しています。
Map/HashMapサンプル
Javaコード:
package com.test.map;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
/**
* Java Map/HashMapの使い方についてシンプルなサンプル
*
* 1)Mapインスタンスの生成
* 2)Mapに要素の追加
* 3)Mapから要素の取得
* 4)Mapから要素の削除
*/
public class TestHashMap {
public static void main(String []args) {
////////////////////////////////////
//1)HashMapからMapのインスタンスを生成
Map map = new HashMap(); //その他コンストラクタもあります。詳細はAPI DOCを参照
////////////////////////////////////
//2)Mapに要素の追加
map.put("name", "Java太郎"); //key/value。String型
map.put("name", "Java太郎01"); //重複putの場合、どうなる?
map.put("age", new Integer(10)); //Integer型
//map.putAll(Map); //ほかのMapオブジェクトに含まれたものを一括追加
//... その他型の値の追加もできますよ
////////////////////////////////////
//3)Mapから要素の取得
//取得方法1:指定するキーによる取得
String strValue = (String)map.get("name"); //nameはStringの型であるため
Integer intValue = (Integer)map.get("age"); //ageはIntegerの型であるため
System.out.println("name:" + strValue);
System.out.println("age:" + intValue);
//取得方法2:キーセットから取得
System.out.println("************** Map.keySet() **************");
Set keySet = map.keySet(); //すべてのキー値を取得
Iterator keyIte = keySet.iterator();
while(keyIte.hasNext()) { //ループ。反復子iteratorによる キー 取得
Object key = keyIte.next();
Object value = map.get(key); //キーよりvalueを取得
System.out.println(key + "=" + value);
}
System.out.println("************** Map.entrySet() **************");
//取得方法3:entrySet(key=valueの形)から取得
Set entrySet = map.entrySet(); //すべてのvalue
Iterator entryIte = entrySet.iterator();
while(entryIte.hasNext()) { //ループ
Map.Entry obj = (Map.Entry)entryIte.next(); //key=value
System.out.println(obj.getKey() + "=" + obj.getValue());
}
System.out.println("************** Map.values() **************");
Collection values = map.values();
//取得方法3:Mapからコレクションに変更
for (Object obj:values) { //JDK1.5+
System.out.println(obj);
}
System.out.println("************** 削除 **************");
//4)Mapから要素の削除
map.remove("name"); //キーは"name"の要素を削除
System.out.println("size="+map.size());
map.clear(); //すべての要素を削除
System.out.println("size="+map.size());
System.out.println("************** その他 **************");
//5)その他
map.put(null, null); //HashMapの場合,nullもセット可能。
System.out.println("size="+map.size());
Map<String, Integer>mapNew = new HashMap<String, Integer>(); //Generics機能。JDK1.5から。
//パラメータ1:String型 にしかセットできません
//パラメータ2:Integer型 にしかセットできません
mapNew.put("age", new Integer(0));
//mapNew.put("name", "10"); //"10"はInteger型ではないので、これはできませんよ
}
}
実行結果:
name:Java太郎01
age:10
************** Map.keySet() **************
age=10
name=Java太郎01
************** Map.entrySet() **************
age=10
name=Java太郎01
************** Map.values() **************
10
Java太郎01
************** 削除 **************
size=1
size=0
************** その他 **************
size=1
age:10
************** Map.keySet() **************
age=10
name=Java太郎01
************** Map.entrySet() **************
age=10
name=Java太郎01
************** Map.values() **************
10
Java太郎01
************** 削除 **************
size=1
size=0
************** その他 **************
size=1
参考資料
Map API doc(Java 2 Platform SE 5.0)
HashMap API doc(Java 2 Platform SE 5.0)
Sponsored Link
- 関連記事
- Java開発及び実行環境の構築 | Linux篇 - (2008/08/31 20:34)
- Java開発及び実行環境の構築 | Windows篇 - (2008/08/31 21:18)
- 5分でJava Hello World! - (2008/08/31 22:13)
- Java言語の制御構文 - 条件分岐if/else/else if - (2008/10/01 21:30)
- Java言語の繰り返し制御構文 - for文 - (2008/10/03 18:22)
- Java言語の繰り返し制御構文 - do ... while文 - (2008/10/03 21:23)
- Java言語の繰り返し制御構文 - while文 - (2008/10/03 21:32)
- Java言語の基礎 - javacコマンドによるコンパイル - (2008/10/10 17:58)
- Java アクセス修飾子概要 - (2008/10/29 18:31)
- Javaアノテーション機能 概要 - (2009/02/12 13:06)