繁体   English   中英

使用替代默认方法在IntelliJ问题中实现TreeSet

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM