Category: Develop

14-6.Hashtable

 
 

6.Hashtable 
 Hashtable は辞書のようなコンテナである。Vectorや配列は順番にオブジェクトを格納し、インデックス(添字)で格納場所を指定していた。Hashtableは添字(数字)で格納場所を指定するのではなく、クラスのオブジェクトで格納場所を指定する。格納場所を指定するオブジェクトをキーといい、格納されるオブジェクトを値(バリュー)という。
 例えば、キーに英単語を格納し、値にその日本語訳を格納すると、英和辞書を作ることができる。このように何かと何かを対応づけるような場合に使用する。含まれるすべての値にアクセスしたい場合はelementsメソッドを、すべてのキーにアクセスしたい場合にはkeysメソッドを用いる。

import java.util.Hashtable

コンストラクタ
Hashtable()

デフォルトの初期容量(11)でHashtableを作成する

Hashtable(int intialCapacity)

初期容量を指定してHashtableを作成する。初期容量を超えて追加(put)使用とした場合は容量を更新する作業が行われるため、時間がかかる場合がある。

メソッド
void clear()
このHashtableの中身を消去する
Object clone()
このHashtableのコピーを作成する。格納されているキーや値はコピーされない。
boolean contains(Object value)
指定された値が格納されていればTrueを格納されていなければFalseが返される。containsKeyよりも時間がかかる。
boolean containsKey(Object key)
指定されたキーが格納されていればTrueを格納されていなければFalseが返される。
Enumeration elements()
ハッシュテーブルにある値のリストを返す。
Enumeration keys()
ハッシュテーブルにあるキーのリストを返す。
Object get(Object key)
指定されたキーに対応する値を返す。対応する値がない場合はnullが返される。
boolean isEmpty() 
このHashtableがからならTrueを、何かが登録されていればFalseを返す。
Object put(Object key, Object value)
キーに対する値を格納する。key, valueともにnullは受け付けず、NullPointerExceptionを返す。すでに同じキーがある場合、前の値が戻り値として返され、キーがなかった場合にはnullが返される。
Object get(Object key)
キーに対する値を返す。keyはnullの場合またはキーが登録されていない場合はnullが返される。
Object remove(Object key)
指定したキーを削除する。そのキーに対する値が返されるが、なければnullが返される。
int size()
    登録されている項目数を返します。
   
sample) Hashtableクラス
import java.io.*;
imoprt java.util.*;

class Test{
     public static void main (String args[ ] ) {
       ZHashtable table = new Hashtable( );

         //辞書追加
         table.put("pen","ぺン");
         table.put("apple","リンゴ");
         table.put("hand","手");
         table.put("summer","夏");

         //引数がなければ終了
         if ( args.length == 0 )
               System.exit(-1) ;

         String str = (String)table.get( args[0] );
         if ( str == null ) 
               System.out.println("そんな言葉は知りません") ;
         if
               System.out.println(str) ;
    }
}

C:\Java\>java Test map
そんな言葉は知りません

C:\Java\>java Test apple
リンゴ

C:\Java\>

14-7.Enumeration

 
 

7.Enumeration 
 Enumerationは、クラスではなくインターフェースである。Enumerationは、VectorやHashtableのようなコンテナ(データ格納クラス)に格納されているデータを最初から最後まで次々にアクセスしたい場合に使用される。
 例えば、ベクタのすべての要素を出力するには、次のようにする。
        for (Enumeration e = v.elements( ) ; e.hasMoreElements( ) ;) {
              System.out.println(e.nextElement( ));
        }

import java.util.Enumeration

メソッド
boolean hasMoreElements()
次の項目がある場合はtrueを、ない場合はfalseを返す。
Object nextElement()
次の項目を返す。次がない場合にはNoSuchElementExceptionが投げられる。
   
sample) Enumerationクラス
import java.io.*;
imoprt java.util.*;

class Test{
     public static void main (String args[ ] ) {
       ZHashtable table = new Hashtable( );

         //辞書追加
         table.put("pen","ぺン");
         table.put("apple","リンゴ");
         table.put("hand","手");
         table.put("summer","夏");

         for Enumeration e = table.elements( ) ; e.hasMoreElements( ) ; )
                String.out.println( e.nextElement( ) ). ; 
    }
}

C:\Java\>java Test map
リンゴ


ペン

C:\Java\>

14-5.Stack

 
 

5. Stack 
 Stackはコンテナの最後にデータを追加し、コンテナの最後から取得する構造である。いわゆる先入れ後出し(FILO)。 
 Vectorクラスの子クラスであり、Vectorクラスのメソッドが使える。しかし、Stack本来の使い方をするのであれば、ここで説明する数個のメソッドしか使わないのがベター。

import java.util.Stack

コンストラクタ
Stack()

唯一のコンストラクタ

メソッド
boolean empty()
Stackの中が空ならTrueを、何かが登録されていればFalseを返す
Object push(Object item)
itemをスタックに登録する。itemがそのまま戻り値として戻る。addElementと全く同じ。
Object addElement(Object item)
itemをスタックに登録。itemがそのまま戻り値として戻りる。pushと全く同じ働きを持つ。
Object pop()
最後に登録したitemが戻る。登録されていたitemは消去され、Stackが空の場合はEmptyStackExceptionが投げられる。
Object peek()
最後に登録したitemが戻る。登録されていたitemは消去されない。Stackが空の場合はEmptyStackExceptionが投げられる。
int search(Object o)
oが登録されている場所をindexで返す。indexは1から始まり、oが登録されていない場合は-1が戻る。
   
sample) Stackクラス
import java.io.*;
imoprt java.util.*;

class Test{
     public static void main (String args[ ] ) {
            Stack stack = new Stack( );

         //push
       for ( int i = 0i < 5 ; i++  ) {
                  Integer integer = new Integer( i )
                stack.push(integer)
                  System.out.println( "push : " + integer );
        }

         //改行
          System.out.println( );

         //pop
         while(  !stack.empty( ) )
                 System.out.println( "pop : " + stack.pop( ) );
        }
}

C:\Java\>java Test
push : 0
push : 1
push : 2
push : 3
push : 4

push : 4
push : 3
push : 2
push : 1
push : 0

C:\Java\>