[英]Implementing a TreeSet in IntelliJ issue with overriding default methods
我目前正在练习为uni实现自己的抽象数据结构,但是intelliJ遇到了问题。
我当前正在实现一个二进制搜索树,显然当我尝试实现它时(根据我正在观看的演讲),它应该提示输入方法void add,void remove,boolean contains和int size。
但是,当自动填充需要实现的方法时,我得到:布尔添加,布尔删除,布尔包含全部,布尔addAll,布尔retainAll,布尔removeAll和无效清除。
当我尝试更改返回类型时,它会变得脾气暴躁,尝试使用不兼容的返回类型会产生冲突错误。
我推测与在我的讲座中使用的相比,可以在Java 8中对其进行更改。
自动生成的骨骼类为:
public class BSTSet<T> implements Set<T>{
@Override
public void add(T element){
}
@Override
public void remove(T element){
}
@Override
public boolean contains(T element){
return false
}
@Override
public int size(T element){
return 0;
}
我得到的代码是:
import java.util.Collection;
import java.util.Iterator;
import java.util.Set;
public class BSTSet<T> implements Set<T> {
@Override
public int size() {
return elements;
}
@Override
public boolean isEmpty() {
return false;
}
@Override
public boolean contains(T element) {
return false;
}
@Override
public Iterator<T> iterator() {
return null;
}
@Override
public Object[] toArray() {
return new Object[0];
}
@Override
public <T1> T1[] toArray(T1[] a) {
return null;
}
@Override
public boolean add(T element) {
return falsee;
}
@Override
public boolean remove(Object o) {
return false;
}
@Override
public boolean containsAll(Collection<?> c) {
return false;
}
@Override
public boolean addAll(Collection<? extends T> c) {
return false;
}
@Override
public boolean retainAll(Collection<?> c) {
return false;
}
@Override
public boolean removeAll(Collection<?> c) {
return false;
}
@Override
public void clear() {
}
}
我认为评论是正确的。 如果您直接实现java.util.Collection,则不必自己实现这些方法。 用于java.util.AbstractCollection的JavaDoc明确指出:
此类提供了Collection接口的基本实现,以最大程度地减少实现此接口所需的工作。
因此,这可能是您想要扩展以减少样板数量的内容。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.