为我自己的类对象制作我自己的 FIFO 队列类来填充它吗?

发布于 2024-09-26 13:12:07 字数 797 浏览 10 评论 0原文

我正在尝试创建一个 FIFO 队列,其中充满了我自己的类对象。
我找到了这个例子,但如果我替换 < 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();
    }
  }

I am trying to make a FIFO Queue that is filled with my own class object.
I found this example but if I replace < E > with < PCB > it does not work:

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

残疾 2024-10-03 13:12:07

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

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

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

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

E is a type parameter. In simple terms, you can consider it as a 'template' which can be used to create a queue that can hold instances of one particular class.

You can create a queue of your PCB objects as follows:

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

Java Generics FAQs is a good resource if you want to learn more about Java generics.

挽手叙旧 2024-10-03 13:12:07
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());
    }
}
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());
    }
}
虫児飞 2024-10-03 13:12:07

太阳的通用教程如下:

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

所以,不可能是你改成PCB的问题。

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

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

    ....

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

The sun's generic tutorial says following:

We recommend that you use pithy
(single character if possible) yet
evocative names for formal type
parameters. It’s best to avoid lower 3
case characters in those names, making
it easy to distinguish formal type
parameters from ordinary classes and
interfaces. Many container types use
E, for element, as in the examples
above.

So, it can't be the problem that you changed it to PCB.

But if PCB is the only class of which you want to store objects, you don't have to create a generic class. Just remove <PCB> from your class definition line and replace all E's with PCB:

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

    ....

    public PCB peek()
    {
        return list.getFist();
    }
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文