Вычислить карту - добавить элемент в существующий список или создать новый список и добавить в него - PullRequest
0 голосов
/ 05 июня 2018

У меня есть этот кусок кода:

private static void computeMapAddition(Map<String, List<XXX>> objectMap,
    XXX objectToAdd, String key) {
    if (objectMap.containsKey(key)) {
        List<XXX> objectList = objectMap
            .get(key);
        objectList.add(objectToAdd);
    } else {
        List<XXX> objectList = new ArrayList<>();
        objectList.add(objectToAdd);
        objectMap.put(key, objectList);
    }
}

Что этот код делает:

1) если карта содержит ключ, то получить значение - это список - и добавить элемент в этот список(в нем уже может быть много элементов)

2) если на карте нет ключа, создайте новый список, добавьте элемент во вновь созданный список и поместите его (ключ, значение) на карту

Есть ли способ сделать его менее многословным с помощью Java 8?

1 Ответ

0 голосов
/ 05 июня 2018

Java 8 добавлен computeIfAbsent в Map интерфейс.Он делает именно то, что вы хотите:

// return the list if already present or make a new one, insert into the map 
// and return the newly created one
List<XXX> objectList = objectMap.computeIfAbsent(key, k -> new ArrayList<>());

// add new object to list
objectList.add(objectToAdd);

Или вы можете объединить его вместе как

objectMap.computeIfAbsent(key, k -> new ArrayList<>()).add(objectToAdd);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...