Как реализовать isEmpty () для hashmap с использованием потока? - PullRequest
2 голосов
/ 29 марта 2019

Я реализую свою собственную хэш-карту, максимально используя поток.Я не могу понять правильный синтаксис для isEmpty ().

Я пробовал много форм:

 return buckets.entrySet().stream().forEach(List::isEmpty());

Вот часть кода:

public class HashMap<K, V> implements Map<K, V> {

    private static final int DEFAULT_CAPACITY = 64;
    private List<List<Entry<K, V>>> buckets;
    private int modCount = 0;
    private KeySet keySet;
    private EntrySet entrySet;
    private ValuesCollection valColl;

    //CTOR
    public HashMap() {
         buckets = new ArrayList<>(DEFAULT_CAPACITY);

         for (int i = 0; i < DEFAULT_CAPACITY; ++i) {
            buckets.add(i, new LinkedList<Entry<K, V>>());
         }
    }
}

Я хотел бы написать простой поток, например:

return buckets.stream().mapToInt(List::size).sum();

для isEmpty ().

1 Ответ

2 голосов
/ 30 марта 2019

Вы можете использовать это:

public boolean isEmpty() {
    return buckets.stream().allMatch(List::isEmpty);
}

Возвращает true, если buckets пусто или все подсписки пусты.

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