Краткое описание метода итеративного удаления Java HashMap

Java

map iteration delete, and our common list, set not the same, can not get Iteraotr object directly, to delete a single method is also provided, in accordance delete key, if we have a need to meet certain conditions, the map elements deleted, как это сделать?

I. Map Iterative Удаление

Итеративное удаление без учета параллелизма, давайте посмотрим, как его можно поддерживать.

1. Очень неэлегантная версия

Мы знаем, что map не наследуется от интерфейса Collection, а HashMap не поддерживает итерацию, так как нет возможности итерации напрямую, то буду честен с версией low b.

Map<String, Integer> map = new HashMap<>();
map.put("a", 1);
map.put("b", 2);
map.put("c", 3);
map.put("d", 4);

List<String> removeKey = new ArrayList<>();
for (Map.Entry<String, Integer> e: map.entrySet()) {
	if (e.getValue() % 2== 0) {
	    removeKey.add(e.getKey());
	}
}
removeKey.forEach(map::remove);

Как насчет приведенной выше реализации? Ничего плохого

(Почему бы просто не удалить при обходе?)

2. Правильный вариант осанки

Хотя Map не выполняет итерацию, но она есть в его наборе записей, поэтому мы можем использовать его для обхода и удаления.

Map<String, Integer> map = new HashMap<>();
map.put("a", 1);
map.put("b", 2);
map.put("c", 3);
map.put("d", 4);

Iterator<Map.Entry<String, Integer>> iterator = map.entrySet().iterator();
Map.Entry<String, Integer> entry;
while (iterator.hasNext()) {
    entry = iterator.next();
    if (entry.getValue() % 2 == 0) {
        iterator.remove();
    }
}
System.out.println(map);

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

3. Краткая версия

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

Map<String, Integer> map = new HashMap<>();
map.put("a", 1);
map.put("b", 2);
map.put("c", 3);
map.put("d", 4);
map.entrySet().removeIf(entry -> entry.getValue() % 2 == 0);

4. Другое

Это не так хорошо, как письмо веры.Контент уже был размещен, и это чисто из семьи.Из-за ограниченных личных возможностей неизбежно будут упущения и ошибки.Если вы найдете ошибки или лучше предложения, вы можете критиковать и исправлять их.

QrCode