如果我有如下的SetMultimap:
SetMultimap<String, MyObject> map = HashMultimap.create();
map.put("a", new MyObject());
map.put("a", null);
map.put("b", null);
从这个集合中删除空值的最佳方法是什么,以便我最终得到类似的东西(例如,某些键只有空值,但我仍然想要键):
a -> obj
b -> empty
答案 0 :(得分:3)
Multimap<String, String> filteredMap = Multimaps.filterValues(map, Predicates.notNull());
答案 1 :(得分:3)
您可以为值创建过滤视图并清除它:
Multimaps.filterValues(map, Predicates.isNull()).clear();
这将从原始地图中删除null
个值。
<强>示例强>
HashMultimap<String, Object> map = HashMultimap.create();
map.put("a", "x");
map.put("a", null);
map.put("b", null);
System.out.println("before: " + map);
Multimaps.filterValues(map, Predicates.isNull()).clear();
System.out.println("after: " + map);
打印:
before: {b=[null], a=[null, x]}
after: {a=[x]}