jp.ne.ytp.util
クラス MultiKeyHash

java.lang.Object
  |
  +--jp.ne.ytp.util.MultiKeyHash

public class MultiKeyHash
extends Object

複数階層のキーを持つことが可能なハッシュテーブルです。 インスタンスの値としてHashMap インスタンスを入れ子で持つことで複数階層を実装しています。
キーの階層数はコンストラクタによって決定します。一度決めたキーの数は変更できません。
次のようなコードを書いた場合、

      String[] s1 = {"aa", "bbb", "111"};
      String[] s2 = {"aa", "ccc", "222"};
      String[] s3 = {"aa", "bbb", "222"};
      MultiHash hash = new MultiHash(3);
      
      hash.put(s1, "1番");
      hash.put(s2, "2番");
      hash.put(s3, "3番");
      
      System.out.println(hash.get(s2));
  
結果は「2番」と表示されます。
またさらに以下を追加した場合は、
      String[] key = {"aa", "bbb"};
      System.out.println(hash.keySet(key));
      System.out.println(hash.values(key));
  
[222, 111]
[3番, 1番]
と表示されます。

バージョン:
$Id: MultiKeyHash.java,v 1.1 2003/02/19 13:39:36 YT0050 Exp $
作成者:
YTP
関連項目:
HashMap

コンストラクタの概要
MultiKeyHash()
          キーが1階層だけのインスタンスを生成します。
MultiKeyHash(int iLayer)
          iLayerで指定された階層数をキーとして持つインスタンスを生成します。
 
メソッドの概要
 Object get(Object[] keys)
          データを検索します。
 Set keySet(Object[] keys)
          keysで指定されたキー配下(1階層下)のMapが保持するキーの一覧を返します。
 void put(Object[] keys, Object value)
          keysをキーとして、valueを格納します。
 Collection values(Object[] keys)
          keysで指定されたキー配下(1階層下)のMapが保持する値の一覧を返します。
 
クラス java.lang.Object から継承したメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

コンストラクタの詳細

MultiKeyHash

public MultiKeyHash()
キーが1階層だけのインスタンスを生成します。 インスタンス生成後この階層数は変更できません。


MultiKeyHash

public MultiKeyHash(int iLayer)
iLayerで指定された階層数をキーとして持つインスタンスを生成します。 インスタンス生成後この階層数は変更できません。

メソッドの詳細

put

public void put(Object[] keys,
                Object value)
keysをキーとして、valueを格納します。
keysで指定された配列数がコンストラクタで指定した階層数以外の場合、 IllegalArgumentExceptionを投げます。

パラメータ:
keys - 格納対象データのキーを格納した配列
value - 格納対象データ
例外:
IllegalArgumentException - 配列の要素数が階層数以外の場合。

get

public Object get(Object[] keys)
データを検索します。見つからない場合はnullを返します。
keys[keys.length - 1]配下のデータを検索しようとしますが、 最下層にたどり着く途中の階層でキーが見つからなかった場合は、 その時点で検索をやめnullを返します。 また、キーの階層数を超えた配列数がkeysで指定された場合もnullを返します。

パラメータ:
keys - 検索対象のキーを格納した配列
戻り値:
検索したデータ

keySet

public Set keySet(Object[] keys)
keysで指定されたキー配下(1階層下)のMapが保持するキーの一覧を返します。
返すセットは当クラス内のマップと連動するので、 セットに対する変更はマップに反映されます。 セットに対する反復の処理中にマップが変更された場合、反復の結果は保証されません。
指定のキーが見つからなかった場合はnullを返します。 また、キーの階層数-1を超えた配列数がkeysで指定された場合もnullを返します。

パラメータ:
keys - 検索対象のキーを格納した配列
戻り値:
キーの一覧
関連項目:
Map.keySet()

values

public Collection values(Object[] keys)
keysで指定されたキー配下(1階層下)のMapが保持する値の一覧を返します。
返すコレクションは当クラス内のマップと連動するので、 コレクションに対する変更はマップに反映されます。 コレクションに対する反復の処理中にマップが変更された場合、反復の結果は保証されません。
指定のキーが見つからなかった場合はnullを返します。 また、キーの階層数-1を超えた配列数がkeysで指定された場合もnullを返します。

パラメータ:
keys - 検索対象のキーを格納した配列
戻り値:
値の一覧
関連項目:
Map.values()


Copyright© 2003, Your Technology Partner(YTP). All rights reserved.