【问题标题】:Add <LinkedList> to previous Queue class of Objects将 <LinkedList> 添加到之前的 Queue 对象类
【发布时间】:2012-10-07 20:08:04
【问题描述】:

我已经编写了一个 ObjectQueue 类来处理对象,但我也希望能够处理 LinkedList 类型,这样我将拥有一个使用链表的对象队列。这甚至可能吗?

基本上我想要类似的东西

ArrayList<LinkedList <Job> > data

除了:ObjectQueue&lt;LinkedList &lt;Job&gt; &gt; 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];
    }
}

【问题讨论】:

  • 你的问题不清楚。您想用 LinkedList 替换数组,还是想指定 ObjectQueue 中的对象类型,以便它们专门为 LinkedList?因为你似乎反对“对象”和“LinkedLists”……
  • 我想我想要做的是将对象队列存储在链表中,可能有不止一种方法可以做到这一点,但我想以不同的新方式使用我的 ObjectQueue 类...
  • 既然LinkedList 实现了Queue(JDK 中也有其他实现),你真的需要你的ObjectQueue 吗?如果它完全在那里,它的功能集似乎是实际队列的一个子集。

标签: java object linked-list queue


【解决方案1】:

你需要让你的类通用:

public class ObjectQueue<T> {
    ...
    public void insert(T x) {
        ...
    }
    public T remove() {
        ...
    }
    ...
}

【讨论】:

  • 我可以使用上面的通用思想修改类,但是我如何转换 item = new Object[size]; ???我试过 "item=new LinkedList(size); 并得到一个构造函数错误......
  • @user1660948 你不能指定 LinkedList 的大小,因为它是一个链表……它不是预先分配的。
  • 啊。行。那么这是一个不必要的声明。谢谢弗兰克
猜你喜欢
  • 2013-12-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-25
  • 2014-04-08
  • 2015-10-30
  • 1970-01-01
  • 2021-11-27
相关资源
最近更新 更多