Сделать свой собственный класс очереди FIFO для моего собственного объекта класса, чтобы заполнить его? - PullRequest
1 голос
/ 05 октября 2010

Я пытаюсь создать очередь FIFO, заполненную моим собственным объектом класса.
Я нашел этот пример, но если я заменю на , он не будет работать:

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 ]

1 голос
/ 28 мая 2014
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());
    }
}
1 голос
/ 05 октября 2010

E является параметром типа. Проще говоря, вы можете рассматривать его как «шаблон», который можно использовать для создания очереди, которая может содержать экземпляры одного конкретного класса.

Вы можете создать очередь из ваших PCB объектов следующим образом:

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

Часто задаваемые вопросы по Java Generics - хороший ресурс, если вы хотите узнать больше о дженериках Java.

0 голосов
/ 05 октября 2010

Общий учебник Sun гласит:

Мы рекомендуем использовать содержательную (если возможно, один символ) именные имена для формального типа параметры. Лучше всего избегать понижения 3 регистр символов в этих именах, делая легко отличить формальный тип параметры из обычных классов и интерфейсы. Многие типы контейнеров используют E для элемента, как в примерах выше.

Итак, проблема не в том, что вы изменили его на PCB.

Но если PCB является единственным классом, в котором вы хотите хранить объекты, вам не нужно создавать универсальный класс. Просто удалите <PCB> из строки определения класса и замените все E на PCB:

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

    ....

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