简单的入队行动,不是那么简单

时间:2010-10-28 07:46:00

标签: java

在我的应用程序中是Java LinkedList队列数据结构中的exe类。

由于某种原因,enqueue无法处理学生类型。一切似乎都很好,除了我得到这个错误:

The method enqueue(String) in the type LinkedQueue<String> is not 
applicable for the arguments (Student)

这是代码。我已经尝试重新安排事情,但我真的很茫然,我无法改变Queue类,因为它应该是通用的。

String result;
LinkedQueue<String> queue = new LinkedQueue<String>();
Student []studentGroup = {
    new Student(new String("data")),
    new Student(new String("data")),
    new Student(new String("data")),
    new Student(new String("data")),
    new Student(new String("data"))};

for (int k = 0; k<studentGroup.length; k++ ) {
    queue.enqueue(studentGroup[k]);
}


}
}

编辑:正在编辑它的伙伴,但谢谢。是的,它缺少一个主要的方法和类名,这是有意的,因为很多人用Google搜索这个代码进行分配。

所以,我怀疑将LinkedQueue设置为,因为我必须做一个dequeue和其他一些东西,并且不想实例化超过我必须。

但是,是的,我一直在为一些如此明显的事情而头脑发抖,但后来我已经醒了34个小时了。感谢你们指出这些人,非常感谢。

3 个答案:

答案 0 :(得分:3)

您的LinkedQueue具有通用类型String,但应该有Student(如果它应该只包含Student个对象(及其规格)):

LinkedQueue<Student> queue = new LinkedQueue<Student>();

您可能会发现WikiPedia上的Motivations for generics很有趣。关于泛型的许多其他资源也是可用的。


另外,为什么new Student(new String("data")),?如果字符串需要是不同的实例,那么new Student("data"),就足够了(并且更具可读性)。

答案 1 :(得分:1)

通过说LinkedQueue<String>,您要求编译器检查列表中的所有元素是否为String类型。你可能意味着LinkedQueue<Student>。 如果您希望它同时接受(BAD idea),您可以LinkedQueue<Object>

答案 2 :(得分:0)

您正在尝试将类型为Student的对象添加到字符串队列中。 你应该:

LinkedQueue<Student> queue = new LinkedQueue<Student>();