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{ //引数がなければ終了 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\> |
Category: Develop
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{ for ( Enumeration e = table.elements( ) ; e.hasMoreElements( ) ; ) |
|
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{ //改行 //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\> |