java - 按值过滤地图列表并返回地图
问题描述
如果我有这样的List<Map<String, String>>
对象currencyList
:
0
0 = "product_id" -> 145
1 = "currency" -> USD
1
0 = "product_id" -> 105
1 = "currency" -> EUR
2
0 = "product_id" -> 102
1 = "currency" -> EUR
然后我如何过滤 where currency=EUR
?
就像是...
List<Map<String, String>> eurCurrencyList
= currencyList.stream()
.anyMatch(map -> map.containsValue("EUR"));
但这不会返回 aboolean
而是返回map
这样的:
0
0 = "product_id" -> 105
1 = "currency" -> EUR
1
0 = "product_id" -> 102
1 = "currency" -> EUR
解决方案
然后如何过滤货币= EUR的位置?
你必须filter
像这样使用:
String key = "currency", value = "EUR";
List<Map<String, String>> eurCurrencyList = currencyList.stream()
.filter(map -> map.containsKey(key) && map.get(key).equals(value))
.collect(Collectors.toList());
注意,而不是:
map.containsValue("EUR")
你必须使用:
.filter(map -> map.containsKey(key) && map.get(key).equals(value))
您必须检查地图是否包含该键和值。
推荐阅读
- r - 如何在 Unix 系统上将剪贴板中的数据读入 R?
- android - 活动一只有一次
- c - 宏不符合 ISO C
- json - 将 JSON 文件中的关键字/值对组合成单个 JSON 以使用 curl 提交
- javascript - 如何将嵌套对象拆分为对象数组 - 避免 for 循环
- java - 生成 .m3u8/hls 实时流缩略图/视频帧颤动
- routes - Isoline v8 不返回具有不同出发时间的不同多边形
- system-verilog - 写入模拟器日志文件而不写入终端
- java - 如何在 AWS EC2 上设置 Java 服务器
- c - Valgrind:条件跳转或移动取决于未初始化的值/未初始化的值是由堆栈分配创建的