next up previous contents
Next: Enumeration Up: Utility classes Previous: Hashtable

Vector

Vectorは、配列によく似ています。どちらも、中味をいれる箱が順番に並んでいる といったイメージで考えることが出来ます。箱には、1,2,3,..,n と番号がふられて いて、この番号を添字にして、中味にアクセスすることができるわけです。

ただ、両者には、違いもあります。配列が、配列の宣言の仕方を思いだしてもらえば すぐに分かるように、同じ型のものしか中味にいれることが出来ないのに対して、 Vectorには、そうした制限が存在しません。

実際には、Vectorは、Object の配列として実現されています。Java では、全ての クラスが、Object クラスを継承していますので、こうしたことが可能となるわけです。

setElementAt()/elementAt()

ある Vector v の i 番目に、Object o をセットしたい時には、v.setElementAt(o,i); を、Vector v の j 番目の要素を取り出したいときには、v.elementAt(j); を使い ます。

indexOf()

このメソッドは、あるVector の中に、あるオブジェクトが存在するかを調べて、 存在すれば、そのインデックスを返します。存在しなければ、-1を返します。 こうしたことは、もちろん配列では出来ませんが、同名のメソッドは、Stringクラスの 中にはありましたね。検索開始位置を指定可能なindexOf()があることを含めて、 働きは、Stringクラスのと同じです。同じ様に、lastIndexOf()というメソッドも 用意されています。

addElement()/removeElement()

addElementは、Vectorのうしろの、まだ要素が入っていない所に、指定された要素を 追加します。インデックスの指定は必要なく、自動的に追加が実行されます。 removeElement は、指定されたインデックスの要素を Vector から削除するのですが、 面白いことに、その時、削除されて空になった部分はそのままに残るのではなく、 後の全ての要素が一つづつ前に繰り上がって、空白を埋めてしまいます。 insertElementAt というメソッドでは、指定されたインデックスに、ある要素が 挿入され、元にあった要素とその後ろの全ての要素は、今度は、後ろに一つづつ 送られることになります。

Stack

スタックがどのようなものかは既知とします。Stackは、Vectorを用いて実現されて います。次にその基本的な部分を示します。

public
class Stack extends Vector {

    public Object push(Object item) {
        addElement(item);
        return item;
    }

    public Object pop() {
        Object  obj;
        int     len = size();

        obj = peek();
        removeElementAt(len - 1);
        return obj;
    }

    .......
}

基本的な、push , pop に加えて、popしないでスタックの最上部の要素を知る peek や、スタックの中にどの様な要素があるかを検索する search といったメソッド も用意されています。



maruyama@wakhok.ac.jp