Category: 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\>

14-10.Object

 
 

10.Object 
 Objectクラスはすべてのクラスの親クラスである。このクラスで定義されているメソッドはすべてサブクラスであるすべてのクラスで使用できる。逆に言えばこのクラスのメソッドは必要に応じてサブクラスでオーバーライドする必要があるということである。特にequalsメソッド、toStringメソッド、cloneメソッドはオーバーライドすることをおすすめする。
 

import java.langObject

コンストラクタ
Object()
      通常このクラスのインスタンスを作成する必要はない。
 
メソッド
pretected
Object
clone()
      自分自身の複製を作成する。例えばメンバー変数がint型などのプリミティブ型の場合はそれらをコピーするだけでよいが、メンバー変数に他のクラスのインスタンスがある場合、そのインスタンスの参照先をコピーするだけでよいか、それともそのインスタンスの複製をそのクラスのcloneメソッドを呼び出して作成する必要があるかは、クラスによって異なり、これはプログラマに任される。
      cloneメソッドを実装した場合はclone可能であることを示すために、Cloneableインターフェースをインプリメントする。逆にCloneableをインプリメントしていないクラスのcloneメソッドを呼ぼうとした場合にはCloneNotSupportedExceptionが投げられる。
boolean equals(Object obj)
      引数で与えられたインスタンスと自分自身が同じならばtrueを返す。クラスによって同じという概念が異なる場合がある。例えばメンバー変数にあるクラスが定義されている場合はその参照先が同じ(==演算子を使用する)ならば「同じ」と定義するのか、その中身が同じ(そのクラスの equalsメソッドを呼び出す)ならば「同じ」と定義するのかは、プログラマに任される。
String toString()
      このクラスの文字列表記を定義します。例えばデバッグ情報などを表示させたい場合には、このクラスのメンバー変数の値をすべて文字列に変換する。
      オーバーライドしない場合は、クラス名とそのインスタンスのハッシュコード(16進数)が返されます。ハッシュコードとは、すべてのインスタンスに固有の数字で、実行される度に異なる値になることもある。プラットフォームによって異なりますが、Windowsの場合はそのインスタンスが生成されたメモリアドレスがそのままハッシュコードになる。
void notify()
      このオブジェクトのモニターで待機中のスレッドを 1 つ再開する。詳しくは スレッド間通信参照
void notifyAll()
      このオブジェクトのモニターで待機中のスレッドをすべて再開する。詳しくは スレッド間通信参照
void wait()
      こ他のスレッドがこのオブジェクトの notify() メソッドまたは notifyAll() メソッドを呼び出すまで、現在のスレッドを待機させる。詳しくは スレッド間通信参照
void wait(long timeout)
      こ他のスレッドがこのオブジェクトの notify() メソッドまたは notifyAll() メソッドを呼び出すか、指定された時間(単位はミリ秒)が経過するまで、現在のスレッドを待機させる。詳しくは スレッド間通信参照