#java #hashmap #java-stream
#java #hashmap #java-stream
Вопрос:
Я реализую свою собственную hashmap, максимально используя stream. Я не могу определить правильный синтаксис для 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:
Вы можете использовать это:
public boolean isEmpty() {
return buckets.stream().allMatch(List::isEmpty);
}
Это возвращает, true
если buckets
значение пусто или все подсписки пусты.
Комментарии:
1. Спасибо, это сработало, я подробнее рассмотрю allMatch().
2. Вы также можете посмотреть на
anyMatch()
иnoneMatch()
.