Map構造Java HashMap/LinkedHashMap/TreeMapの順序性について
2010/03/01 16:59Update
Java HashMap/LinkedHashMap/TreeMapなどのMapに挿入したデータの順序性の保持についてサンプルから検証してみます。
Mapについて
Java Map/HashMapよくある使い方
サンプル
TestOrderOfMap.javapackage com.test.map;
import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;
/**
* Java HashMap/LinkedHashMap/TreeMapの順序性について
*
* 1)HashMapの順序性
* 2)LinkedHashMapの順序性
* 3)TreeMapの順序性
*
*/
public class TestOrderOfMap {
public static void main(String []args) {
////////////////////////////////////
//1)HashMapからMapのインスタンスを生成
System.out.println("*** HashMap ***");
Map map = new HashMap();
putMapData(map);
printMapData(map);
////////////////////////////////////
//2)LinkedHashMapからMapのインスタンスを生成
System.out.println("*** LinkedHashMap ***");
map = new LinkedHashMap();
putMapData(map);
printMapData(map);
////////////////////////////////////
//3)TreeMapからMapのインスタンスを生成
System.out.println("*** TreeMap ***");
map = new TreeMap();
putMapData(map);
printMapData(map);
}
private static void putMapData(Map map) {
map.put("2", "てすと2");
map.put("1", "てすと1");
map.put("3", "てすと3");
map.put("b", "てすとb");
map.put("c", "てすとc");
map.put("a", "てすとa");
}
private static void printMapData(Map map) {
Set <String>keySet = map.keySet();
Iterator <String>keyIte = keySet.iterator();
while(keyIte.hasNext()) {
String mapKey = keyIte.next();
String data = (String)map.get(mapKey);
System.out.println(mapKey + "=" + data);
}
}
}
実行結果:
*** HashMap ***
3=てすと3
a=てすとa
c=てすとc
2=てすと2
b=てすとb
1=てすと1
*** LinkedHashMap ***
2=てすと2
1=てすと1
3=てすと3
b=てすとb
c=てすとc
a=てすとa
*** TreeMap ***
1=てすと1
2=てすと2
3=てすと3
a=てすとa
b=てすとb
c=てすとc
3=てすと3
a=てすとa
c=てすとc
2=てすと2
b=てすとb
1=てすと1
*** LinkedHashMap ***
2=てすと2
1=てすと1
3=てすと3
b=てすとb
c=てすとc
a=てすとa
*** TreeMap ***
1=てすと1
2=てすと2
3=てすと3
a=てすとa
b=てすとb
c=てすとc
■結論:
1)挿入順序を保持しないMap:HashMap
1)挿入順序を保持したMap:LinkedHashMap
2)キー昇順Map:TreeMap
Sponsored Link
- Relative Articles
- 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)