Map構造Java HashMap/LinkedHashMap/TreeMapの順序性について

2010/03/01 16:59Update
TAGS: Java | Map | HashMap | LinkedHashMap | TreeMap | 順序性 | order | サンプル

Java HashMap/LinkedHashMap/TreeMapなどのMapに挿入したデータの順序性の保持についてサンプルから検証してみます。

Mapについて


Java Map/HashMapよくある使い方


サンプル


TestOrderOfMap.java
package 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

■結論:


1)挿入順序を保持しないMap:HashMap
1)挿入順序を保持したMap:LinkedHashMap
2)キー昇順Map:TreeMap

有关作者
Syboos.jp編集長AJavaやオープンソース情報の執筆、Webサイトの開発や運営全般の業務に携わる。

Sponsored Link


Comments