У меня есть карта, для которой значения являются коллекцией.Учитывая ключ, я хочу удалить элемент коллекции и вернуть его, но я также хочу удалить запись, если коллекция пуста.Есть ли способ сделать это коротким путем, используя один из многочисленных новых методов Map Java 8?
Один простой пример (я использую стек, но это может быть список, набор и т. Д.),Для примера давайте предположим, что уже проверено, что карта содержит ключ.
public static String removeOne(Map<Integer, Stack<String>> map, int key) {
Stack<String> stack = map.get(key);
String result = stack.pop();
if(stack.isEmpty()){
map.remove(key);
}
return result;
}
Я пытался сделать что-то вроде
map.compute(1, (k, v) -> {v.pop(); return v.size() == 0 ? null : v;});
Но даже если это действительно такудалить запись, если она пуста, я не знаю, как получить значение, возвращаемое pop()
.