1

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

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();
    }
  }
4

3 回答 3

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());
    }
}
于 2014-05-28T18:54:32.377 回答
1

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

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

SimpleQueue<PCB> queue = new SimpleQueue<PCB>();

如果您想了解有关 Java 泛型的更多信息,Java 泛型常见问题解答是一个很好的资源。

于 2010-10-05T19:18:14.010 回答
0

太阳的通用教程如下:

我们建议您为形式类型参数使用简洁(如果可能,使用单个字符)但令人回味的名称。最好避免在这些名称中使用小写 3 字符,以便将形式类型参数与普通类和接口区分开来。许多容器类型使用 E 表示元素,如上面的示例所示。

因此,您将其更改为PCB.

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

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

    ....

    public PCB peek()
    {
        return list.getFist();
    }
}
于 2010-10-05T19:24:40.353 回答