筛选出list中存的map的某个字段
时间: 2023-11-27 16:53:52 浏览: 62
你可以使用列表推导式来筛选出list中存的map的某个字段。假设list中存储的是字典,且你要筛选出字典中key为'field'的值,可以使用如下代码:
```
my_list = [{'field': 'value1', 'other_field': 'other_value1'}, {'field': 'value2', 'other_field': 'other_value2'}, {'other_field': 'other_value3'}] # 示例列表
result_list = [my_dict['field'] for my_dict in my_list if 'field' in my_dict] # 筛选出字段为'field'的值
print(result_list) # 输出['value1', 'value2']
```
在上述代码中,列表推导式通过遍历list中的每个字典,判断其是否包含'filed'字段,如果有则将该字段的值加入到结果列表中。
相关问题
java stream流,筛选出list中的某个字段
可以使用Java 8中的Stream API来对List进行筛选。假设我们有一个List<User>,每个User对象都有属性name,我们想筛选出所有名字为"Tom"的User对象的name属性,可以这样实现:
```
List<User> userList = ... // 假设我们有一个User对象的List
List<String> tomNameList = userList.stream()
.filter(user -> "Tom".equals(user.getName()))
.map(User::getName)
.collect(Collectors.toList());
```
这里使用了Stream的filter方法来过滤列表中的元素,然后使用map方法将每个User对象转换成它的名字属性,最后使用collect方法将符合条件的元素收集到一个新的List中。其中,lambda表达式 `user -> "Tom".equals(user.getName())` 表示对于每个User对象,只有它的名字是"Tom"时才会被保留,`User::getName` 表示获取User对象的name属性。最终得到的是一个名字为"Tom"的User对象的name属性的List。
java 筛选出两个list中某个字段相同的数据
你可以使用Java 8中的Stream API来筛选出两个list中某个字段相同的数据,具体可以按照以下步骤操作:
1. 定义两个List,假设分别为list1和list2。
2. 使用Stream API的filter()方法过滤出list1中需要比对的字段,假设字段为field1,并将结果存储在一个Set集合中,例如:
```java
Set<String> set1 = list1.stream().map(item -> item.getField1()).collect(Collectors.toSet());
```
3. 使用Stream API的filter()方法过滤出list2中需要比对的字段,假设字段为field2,并将结果存储在一个List集合中,例如:
```java
List<Item> resultList = list2.stream().filter(item -> set1.contains(item.getField2())).collect(Collectors.toList());
```
4. 最终得到的resultList就是两个list中某个字段相同的数据。
需要注意的是,这里的Item类需要重写equals()和hashCode()方法,否则无法正确比较两个对象是否相等。
阅读全文