我需要使用接口java.util.Collection
实现包数据结构。
我不是在寻求数据结构实际实现方面的帮助。我只是无法让我的程序编译。我只是想在开始实际实现方法之前编译一个空白的接口实现(用方法的非功能签名)。
class Bag<T> implements java.util.Collection<T>
{
public void Collection () {
}
public boolean add(E e) {
}
public boolean addAll (Collection<? extends E> c) {
}
public void clear() {
}
public boolean contains(Object o) {
}
public boolean containsAll(Collection<?> c) {
}
public boolean equals(Object o) {
}
public int hashCode() {
}
public boolean isEmpty() {
}
public Interator<E> interator() {
}
public boolean remove(Object o) {
}
public boolean removeAll(Collection<?> c) {
}
public int size() {
}
public Object[] toArray() {
}
public <T> T[] toArray(T[] a) {
}
}
编译器在add
等方法的参数中找不到E类。我应该为E
定义一个类,还是我不了解E实际上是什么?编译器说它找不到类集合(在addAll
等方法的参数中)我是否导入java.util.Collection
或者我还应该知道其他什么?编译器也不知道class Iterator
,我也不知道。
我知道这可能是基本的,但我昨天在谷歌等地找不到任何东西,而我教授的讲座根本没有关注这些项目。我迷失在这一个。谢谢你的帮助!
编辑:另外,我没有在这方面进行过如此多的搜索,但是如果有人能告诉我关于“{”的任何有用信息,例如public boolean addAll (Collection<? extends E> c) {}
,那将非常感激。
答案 0 :(得分:2)
使用T
或E
作为类型参数,然后在整个类定义中使用它。
Java文档使用E
,因此您可以将第一行更改为:
class Bag<E> implements java.util.Collection<E>
您还需要为那些不返回void的方法返回值或抛出异常。
public int size() {
throw UnsupportedOperationException();
}
答案 1 :(得分:0)
E应为T,这是您要存储的通用类型。你的构造函数应该是你的类而不是接口。此外,您还需要在方法中添加至少带有返回值的存根返回,例如: &#34;返回false&#34;如果返回是布尔值。
希望这有帮助。
答案 2 :(得分:0)
尝试将导入语句更改为import java.util.*;
答案 3 :(得分:0)
因为您没有声明E
,所以请改用T
,并且还需要返回声明返回的地方。
答案 4 :(得分:0)
您的通用参数名为T
,您在方法的实现中使用E
。如果您使用T
作为元素类型,请更新方法签名。
在非空方法中,如果没有return null;
或return false;
之类的虚拟实现,它可能仍然无法编译。
java.util.Iterator是interface,它描述了一组允许您迭代集合中元素的方法。您将返回实现该接口及其方法的类的实例。 YourListIterator
可能会保留一个引用或索引到列表中的位置,返回相应的元素并向前移动列表。
此tutorial中讨论了泛型(包括使用?
)。
答案 5 :(得分:0)
在JAVA中实现接口之前,您将需要做很多基础学习。可以阅读&#34;思考java&#34;或者其他的东西 在你的程序中有多个问题