为我自己的类对象创建自己的FIFO队列类来填充它?

时间:2010-10-05 19:13:19

标签: java class object queue fifo

我正在尝试创建一个填充了我自己的类对象的FIFO队列。
我找到了这个例子但是如果我替换< E>与< PCB>它不起作用:

import java.util.LinkedList;


public class SimpleQueue<E> {

private LinkedList<E> list = new LinkedList<E>();


 public void put(E o) {
    list.addLast(o);
     }


  public E get() {
     if (list.isEmpty()) {
          return null;
      }
   return list.removeFirst();
   }


   public Object[] getAll() {
     Object[] res = new Object[list.size()];
    for (int i = 0; i < res.length; i++) {
      res[i] = list.get(i);
      }
   list.clear();
    return res;
 }



    public E peek() {
      return list.getFirst();
      }


  public boolean isEmpty() {
     return list.isEmpty();
    }


  public int size() {
    return list.size();
    }
  }

3 个答案:

答案 0 :(得分:1)

E是一个类型参数。简单来说,您可以将其视为“模板”,可用于创建可以保存一个特定类的实例的队列。

您可以按如下方式创建PCB个对象的队列:

SimpleQueue<PCB> queue = new SimpleQueue<PCB>();
如果您想了解有关Java泛型的更多信息,

Java Generics FAQs是一个很好的资源。

答案 1 :(得分:1)

public class MyQueue{

    int arr[]=new int[10];
    int i=0;
    int j=0;
    public void inn(int a)
    {
        System.out.println("You hava entered :"+a);
        arr[i]=a;
        i=i+1;
    }
    public int out()
    {
        return arr[j++];

    }
    public static void main(String args[])
    {
        MyQueue q=new MyQueue();
        q.inn(4);
        q.inn(3);
        q.inn(46);
        q.inn(44);
        q.inn(43);
        System.out.println(q.out());
        System.out.println(q.out());
        System.out.println(q.out());
        System.out.println(q.out());
    }
}

答案 2 :(得分:0)

太阳的通用教程说:

  

我们建议您使用简洁   (如果可能,单个字符)   正式类型的令人回味的名字   参数。最好避免降低3   这些名称中的大小写字符,制作   很容易区分正式类型   来自普通类和的参数   接口。许多容器类型使用   E,对于元素,如示例中所示   上方。

因此,将问题更改为PCB可能不是问题。

但如果PCB是您要存储对象的唯一类,则不必创建泛型类。只需从您的班级定义行中删除<PCB>,然后将所有E替换为PCB

public class SimpleQueue
{
    LinkedList<PCB> list = new LinkedList<PCB>();

    ....

    public PCB peek()
    {
        return list.getFist();
    }
}