怎么在List<HashMap<String, Object>>中map中的map找出包含我想要关键字的list
时间: 2024-02-05 12:13:51 浏览: 141
java利用反射,将Object和Map进行互相转换,list和map互相转换
可以使用Java 8的Stream API来实现这个功能。
假设需要找出包含关键字"keyword"的HashMap<String, Object>对象所在的List,可以按如下步骤进行操作:
1. 使用stream()方法将List转换成Stream对象。
2. 使用filter()方法过滤出包含关键字的HashMap<String, Object>对象。
3. 使用map()方法将过滤后的HashMap<String, Object>对象转换成它所在的List的索引。
4. 使用collect()方法将索引收集到一个新的List中。
示例代码如下:
```java
List<HashMap<String, Object>> list = new ArrayList<>();
// 假设已经初始化了List<HashMap<String, Object>>对象
String keyword = "keyword"; // 关键字
List<Integer> result = IntStream.range(0, list.size()) // 生成索引
.filter(i -> list.get(i).entrySet().stream() // 过滤出包含关键字的HashMap<String, Object>对象
.anyMatch(e -> e.getValue() instanceof Map && ((Map) e.getValue()).containsKey(keyword)))
.boxed() // 装箱
.collect(Collectors.toList()); // 收集索引到新的List中
System.out.println(result); // 输出符合条件的HashMap<String, Object>对象所在的List的索引
```
上述代码中,使用了IntStream.range()方法生成了0到list.size()-1的所有索引,然后使用filter()方法过滤出包含关键字的HashMap<String, Object>对象,使用map()方法将过滤后的HashMap<String, Object>对象转换成它所在的List的索引,最后使用collect()方法将索引收集到一个新的List中。注意,在过滤时需要判断HashMap<String, Object>对象中是否包含类型为Map且包含关键字的值。
阅读全文