0

オブジェクトを処理する ObjectQueue クラスを作成しましたが、リンク リストを使用してオブジェクトのキューを作成できるように、LinkedList タイプも処理できるようにしたいと考えています。これは可能ですか?

基本的に私は似たようなものが欲しい

ArrayList<LinkedList <Job> > data

例外:ObjectQueue<LinkedList <Job> > data

クラスを変更するにはどうすればよいですか:

public class ObjectQueue {
      private Object[] item;
      private int front;
      private int rear;
      private int size;


    public ObjectQueue() {
        size = 100;
        item = new Object[size];
        front = size-1;
        rear  = size-1;
    }

    public ObjectQueue(int max) {
        size = max;
        item = new Object[size];
        front = size-1;
        rear  = size-1;
    }

    public boolean isEmpty() {
        return front == rear;
    }

    public boolean isFull() {
       return rear == size-1 ? front == 0 : front == rear+1;
    }

    public void clear() {
        front = size-1;
        rear  = size-1;
    }


    public void insert(Object x) {
        if (isFull()) {
            System.out.println("Insert Runtime Error: Queue Overflow");
            System.exit(1);
        }
        if (rear == size-1)         // or rear = (rear+1) % size;
            rear = 0;
        else
            rear++;
        item[rear] = x;
    }

    public Object remove() {
        if (isEmpty()) {
            System.out.println("Remove Runtime Error: Queue Underflow");
            System.exit(1);
        }
        if (front == size-1)            // or front = (front+1) % size;
            front = 0;
        else
            front++;
        return item[front];
    }

    public Object query() {
        if (isEmpty()) {
            System.out.println("Query Runtime Error: Queue Underflow");
            System.exit(1);
        }
        if (front == size-1)
            return item[0];
        else
            return item[front+1];
    }
}
4

1 に答える 1

0

クラスをジェネリックにする必要があります。

public class ObjectQueue<T> {
    ...
    public void insert(T x) {
        ...
    }
    public T remove() {
        ...
    }
    ...
}
于 2012-10-07T20:40:28.520 に答える