Java流地图集合

堆栈攻击

我有一个收藏:

Collection<Map<String, Object>> items = new ArrayList();
Map<String, Object> item1 = new HashMap();
Map<String, Object> item2 = new HashMap();

item1.put("first_name", "john");
item1.put("last_name", "doe");

item2.put("first_name", "jane");
item2.put("last_name", "doe");

items.add(item1);
items.add(item2);

我想使用流过滤掉集合中所有将“ first_name”设置为“ jane”的地图。并且它应该返回一组地图(相同类型)。

如果可以通过不使用流来完成,那么我不介意,但我更喜欢流。

姆什尼克

不太难做。只需将其添加到您的代码中即可。

Collection<Map<String, Object>> items2 = items.stream().filter(a -> !"jane".equals(a.get("first_name"))).collect(Collectors.toList());

您确实需要指定如果地图根本不包含键“ first_name”时会发生什么,我假设它需要具有一个first_name键(不是jane)才能有效地进行后期过滤。

此外,请注意。您现有的代码未正确使用泛型。我的IDE至少给我一个警告,指出前三行的转换未经检查。在Java 1.7之后,您可以让它推断泛型类型参数,但是您仍然需要提供符号<>才能实现这一点。这是固定版本:

Collection<Map<String, Object>> items = new ArrayList<>();
Map<String, Object> item1 = new HashMap<>();
Map<String, Object> item2 = new HashMap<>();

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章