当前位置: 首页 > 知识库问答 >
问题:

在 IntelliJ 问题中实现树集,并覆盖默认方法

孟乐逸
2023-03-14

我目前正在练习为uni实现我自己的抽象数据结构,但是我在intelliJ方面遇到了问题。

我目前正在实现一个二进制搜索树,显然当我尝试实现它时(根据我正在看的讲座),它应该提示使用方法void add、void ade、boolean包含和int size。

然而,当自动填充需要实现的方法时,我得到了:boolean add、boolean remove、boolean containsAll、boolean addAll、boolean retainAll、boolean removeAll和void clear。

当我尝试更改返回类型时,它会变得暴躁,它会在尝试使用不兼容的返回类型时出现冲突错误。

我推测它可以在Java8中进行更改,与我的讲座中使用的版本相比。

自动生成的骨架类是:

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

}

共有1个答案

耿建弼
2023-03-14

我认为这个评论是正确的。如果你直接实现java.util.Collection,你不应该对必须自己实现这些方法感到惊讶。java.util.AbstractCollection的JavaDoc非常清楚地指出:

此类提供 Collection 接口的骨架实现,以最大程度地减少实现此接口所需的工作量。

因此,这可能就是您想要扩展以减少样板文件数量的内容。

 类似资料:
  • 问题内容: 我已经能够覆盖所有名称以“ android:”为前缀的主题,但是Android themes.xml还定义了似乎无法被覆盖的属性。例如: colorTheground是在Theme.Light xml中定义的,但是在此处添加它可以使我 错误。如何为整个应用程序覆盖该样式? 问题答案: 您可以用修改属性(如)的方式覆盖标准属性,只是不要忘记添加如下前缀:

  • 问题内容: 为什么必须重写接口的所有方法? 例如,如果我有 我将有很多我什至不会使用的方法,有没有一种方法可以删除未使用的实现方法,例如,如果 我计划从接口中使用一种方法 我也不想使用抽象,因为这意味着我无法创建对象的实例(至少我的编译器这样说) 问题答案: 具体的类必须始终实现接口的所有方法。如果您还没有扩展,可以扩展。它实现了空方法,以避免将其写出来。您可以在类内部使用匿名类,如下所示:

  • 我想通过创建一个具体实现类的对象来执行接口中默认方法的定义体,该对象也覆盖了该方法。无论我是直接创建具体实现类的对象,还是通过动态绑定/多态,实现类中定义/重写的主体都只是得到执行。请看下面的代码 我想知道如何在控制台内部界面银行打印以下内容--loan()

  • 问题内容: 我的一个模型具有一个delete标志,该标志用于全局隐藏对象: 如何覆盖Django管理模块使用的默认查询集以包括已删除的对话? 问题答案: 你可以在模型管理类中重写 方法。 请注意,在Django <= 1.5中,该方法被命名为just 。

  • 问题内容: 我想覆盖Java外观。我只想显示不同的按钮。 我想要Windows Look and Feel的所有功能,但仅按钮有所不同。希望你明白我的意思。 还告诉我如何制作圆形的JtabbedPane ??? 问题答案: 自定义GUI类 调用您的自定义GUI类

  • 问题内容: 我有一个模板与此: Django自动将此翻译为Terminarsesión西班牙语。但是,我想将其翻译为Cerrarsesión。 我试图将此文字添加到.po文件中,但是在编译消息时出现错误,指出该文字重复。 有没有一种方法可以更改/覆盖默认的Django翻译? 谢谢。 问题答案: 最简单的方法是收集在django.contrib.admin语言环境文件夹中找到的.po文件,然后重新编