我正在尝试创建一个填充了我自己的类对象的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();
}
}
答案 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();
}
}