キーの順番でデータを扱う事が可能なクラス


HashMap classでは、キーの値の順番でデータを扱う事が出来ないので、特定のキーの値を指定して、”これよりキー値が大きなデータ”
と言ったようなアルゴリズムでデータを扱う事が出来ません。
SortedMap interfaceを実装したTreeMapを使えば、データがキーの順番に扱う事が出来るため、上のようなリクエストに応える事が出来ます。
下のsampleでは顧客番号と顧客名をマッピングしたデータを作った後に、TreeMapからcustomerIDが20010901-0000以上の
customerを抽出し、列挙しています。

import java.util.*;

class ExamTreeMap { 

    public static void main(String[] args)  {
          TreeMap  tm  =  new TreeMap();
          tm.put(new Long(200107310001L),   "Bill");
          tm.put(new Long(200112250033L), "Tobal");
          tm.put(new Long(200109180654L), "Duke");

          SortedMap  sm  =  tm.tailMap(new Long(200109010000L));

          Set  sm_set  =  sm.keySet();                                           //get  list  of keyset
          Iterator   it     =  sm_set.iterator();
          while ( it.hasNext() )  {
              String  cust_name  =  (String)tm.get(it.next());
              System.out.println( cust_name);
          }
     }
}


実行結果

Duke
Tobal

とコンソールに表示されます。


TreeMap classtailMap method
  TreeMapクラスはHashMapクラスと同じく、キーも要素も参照型を扱い、基本型のデータは扱いません。
  tailMapメソッドは引数に渡された値以上のキーを持つMapを抽出します。
  tailMapメソッド以外にもfrom toでキー範囲を指定できるメソッドなどが用意されています。

Iterator
  抽出されたデータを列挙するために、Iteratorを使っています。
  Mapから直接にIteratorを取得できない為に、keySet()メソッドでキー値だけのSetを取り出しています。
  SetはCollectionインターフェイスを実装しているので、iterator()メソッドでIteratorオブジェクトの入手が可能です。