Реализация TreeSet в проблеме IntelliJ с переопределением методов по умолчанию - PullRequest
0 голосов
/ 13 ноября 2018

В настоящее время я практикую реализацию собственных абстрактных структур данных для uni, однако у меня возникла проблема с intelliJ.

В настоящее время я реализую дерево бинарного поиска, по-видимому, когда я пытаюсь реализовать это(в соответствии с лекцией, которую я смотрю), она должна запросить методы void add, void remove, boolean contains и int size.

Однако при автозаполнении методов, которые должны быть реализованы, я получаю: boolean add,логическое удаление, логическое содержимоеAll, логическое значение addAll, логическое значение retainAll, логическое значение removeAll и очистка void.

При попытке изменить тип возвращаемого значения он становится раздражительным и выдает ошибку коллизии при попытке использовать несовместимый тип возвращаемого значения.

Я предполагаю, что это может быть изменено в 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() {
}

}

1 Ответ

0 голосов
/ 13 ноября 2018

Я думаю, что комментарий правильный.Если вы реализуете java.util.Collection напрямую, вы не должны удивляться, что вам придется реализовывать эти методы самостоятельно.JavaDoc для java.util.AbstractCollection довольно четко заявляет:

Этот класс предоставляет скелетную реализацию интерфейса Collection, чтобы минимизировать усилия, необходимые для реализации этого интерфейса.

Это, вероятно, то, что вы хотите расширить, чтобы уменьшить количество шаблонов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...