Переопределить добавление в HashSet - PullRequest
0 голосов
/ 11 марта 2019

Я просто пытаюсь написать свою собственную реализацию HashSet add ().Код не использует мою реализацию, а идет по умолчанию.

import java.util.Collection;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;

public class DuplicateElements<E> extends HashSet<E>{

    @Override
    public boolean add(E e) {
        System.out.println("Using this");
        return super.add(e);
    }

    public static void main(String[] args) {
    String names[] = { "Java", "JavaScript", "Ruby", "C", "Python", "Java", "Python"};

    HashSet<String> set = new HashSet<String>();

    for (int i = 0; i < names.length; i++) {
        boolean isAdded = set.add(names[i]);
        if (!isAdded) {
            System.out.println("Duplicate Found: "+names[i]);
        }
    }
    }
}

Я пытаюсь изменить метод add, чтобы игнорировать регистр при добавлении элементов.

Ответы [ 2 ]

0 голосов
/ 11 марта 2019

Ваша ошибка в этой строке кода:

HashSet<String> set = new HashSet<String>();

Приведенный выше код по-прежнему использует реализацию HashSet по умолчанию.
Вы должны использовать собственную реализацию HashSet, выполнив это:

DuplicateElements<String> set = new DuplicateElements<String>();
0 голосов
/ 11 марта 2019
HashSet<String> set = new HashSet<String>();

Ну, похоже, вы используете значение по умолчанию HashSet, может быть, вы имели в виду

 HashSet<String> set = new DuplicateElements<>();
...