J'ai une carte pour laquelle les valeurs sont une collection. Étant donné une clé, je veux supprimer un élément de la collection et le retourner, mais je veux également supprimer l'entrée si la collection est vide. Existe-t-il un moyen de faire cela de manière rapide en utilisant l'une des nombreuses nouvelles méthodes Map de Java 8 ?
Un exemple simple (j'utilise une pile mais il pourrait s'agir d'une liste, d'un ensemble, etc.) Pour les besoins de l'exemple, disons qu'il est déjà vérifié que la carte contient la clé.
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;
}
J'ai essayé de faire quelque chose comme
map.compute(1, (k, v) -> {v.pop(); return v.size() == 0 ? null : v;});
Mais même s'il supprime effectivement l'entrée si elle est vide, je ne sais pas comment obtenir la valeur renvoyée par la fonction pop()
.