JavaA2Z

KAB-studio > プログラミング > JavaA2Z > TreeMapとは

TreeMap

日本語 木地図
英語 tree map
ふりがな つりーまっぷ
フリガナ ツリーマップ

解説

J2SEに含まれるクラスのひとつ。パッケージも含めたクラス名java.util.TreeMap。
キー追加時に「キーの昇順ソート」した状態で格納するMapインターフェイス実装クラス
 
Mapインターフェイス実装クラス
基本的にはHashMapクラスと同じ機能を持つ。
HashMapクラスとの違いは、追加時に「キーでソート」する点である。
 
HashMapクラスは、追加時にキーのハッシュコードでグループ分けをう。
対して、TreeMapクラスは中に「木構造」を持ち、追加時にキーの昇順ソートして木構造に追加する。つまり、内部の木構造は「キーの順番」で並べられているということになる。
 
get()メソッド等によりキーの検索う際には、この並べられているキーを順番にチェックするため、「並び順」の先頭側は早く取得できるが、後ろ側は時間が掛かることになる。
そのため、ハッシュコードでグループ分けをしているHashMapクラスに比べて検索に時間が掛かる傾向にある。
 
TreeMapクラスは、keySet()メソッド等で「キー一覧」を取得した場合に、ソートされた順番で取得することができる。
この「キー一覧がソートされた形で取得できる」ことこそがTreeMapクラスのメリットと言えるだろう。処理速度は特に気にせず、本当の意味での「辞書」が必要な場合にはTreeMapクラスが有効だろう。
 
ソート時の「要素の比較」は、Arraysクラスのsort()メソッド同様Comparableインターフェイスを使用するため、キーはComparableインターフェイス実装クラスである必要がある。
キーのクラスComparableインターフェイス実装クラスではない場合、もしくは「降順」等特別なソートいたい場合には、TreeMapクラスコンストラクタComparatorインターフェイス実装クラスを渡す。

参考サイト


(KAB-studioからのおしらせです)

サンプルプログラム(とか)サンプルを別ウィンドウで表示サンプルをクリップボードへコピー(WindowsでIEの場合のみ)

// Sample.java
import java.util.TreeMap;
import java.util.Set;
import java.util.HashMap;
import java.util.Iterator;

public class Sample
{
    public static void main( String[] args )
    {
        // TreeMapを作成します。
        TreeMap treeMap = new TreeMap();
        // 要素を追加します。
        treeMap.put( "BBB"new Integer( 0 ) );
        treeMap.put( "AAA"new Integer( 1 ) );
        treeMap.put( "CCC"new Integer( 2 ) );

        Set set = treeMap.keySet();
        // 全部出力します。
        for( Iterator iter = set.iterator(); iter.hasNext();  )
        {
            String string = (String)iter.next();
            System.out.println( string );
        }
        // AAA
        // BBB
        // CCC

        // このように、ちゃんと並んでいます。

        // ちなみにHashMapクラスを使用する場合。

        // HashMapを使用します。
        HashMap hashMap = new HashMap();
        // 要素を追加します。
        hashMap.put( "BBB"new Integer( 0 ) );
        hashMap.put( "AAA"new Integer( 1 ) );
        hashMap.put( "CCC"new Integer( 2 ) );

        set = hashMap.keySet();
        // 全部出力します。
        for( Iterator iter = set.iterator(); iter.hasNext();  )
        {
            String string = (String)iter.next();
            System.out.println( string );
        }
        // CCC
        // AAA
        // BBB

        // このように、HashMapクラスの場合には並んでいません。
    }
}
// Sample.java
import java.util.TreeMap;
import java.util.Set;
import java.util.HashMap;
import java.util.Iterator;

public class Sample
{
    public static void main( String[] args )
    {
        // TreeMapを作成します。
        TreeMap treeMap = new TreeMap();
        // 要素を追加します。
        treeMap.put( "BBB", new Integer( 0 ) );
        treeMap.put( "AAA", new Integer( 1 ) );
        treeMap.put( "CCC", new Integer( 2 ) );

        Set set = treeMap.keySet();
        // 全部出力します。
        for( Iterator iter = set.iterator(); iter.hasNext();  )
        {
            String string = (String)iter.next();
            System.out.println( string );
        }
        // AAA
        // BBB
        // CCC

        // このように、ちゃんと並んでいます。

        // ちなみにHashMapクラスを使用する場合。

        // HashMapを使用します。
        HashMap hashMap = new HashMap();
        // 要素を追加します。
        hashMap.put( "BBB", new Integer( 0 ) );
        hashMap.put( "AAA", new Integer( 1 ) );
        hashMap.put( "CCC", new Integer( 2 ) );

        set = hashMap.keySet();
        // 全部出力します。
        for( Iterator iter = set.iterator(); iter.hasNext();  )
        {
            String string = (String)iter.next();
            System.out.println( string );
        }
        // CCC
        // AAA
        // BBB

        // このように、HashMapクラスの場合には並んでいません。
    }
}

この単語を含むページ

「みだし」に含まれているページ

「解説」に含まれているページ

「サンプルプログラムとか」に含まれているページ

はてなブックマーク 詳細を表示 はてなブックマーク ブックマーク数
livedoorクリップ 詳細を表示 livedoorクリップ ブックマーク数
Yahoo!ブックマーク 詳細を表示 users
del.icio.us 登録する RSSに登録
サンプルを別ウィンドウで表示
サンプルをクリップボードへコピー(WindowsでIEの場合のみ)
update:2005/12/03
このページは、Javaプログラミング言語についての用語を網羅した辞書「JavaA2Z」の一ページです。
詳しくは「JavaA2Z」表紙の説明をご覧ください。