list集合里每条数据都有key和value俩个属性,用stream流获取集合里key值等于name和code的数据,key值等于name,code的数据各只有一条 java
时间: 2024-04-13 13:28:37 浏览: 94
java list集合排序按某一属性排序操作
5星 · 资源好评率100%
要使用 Stream 流获取集合中 key 值等于 "name" 和 "code" 的数据,且每个 key 值只有一条数据,可以按照以下步骤进行操作:
1. 将集合转换为 Stream 对象。
2. 使用 `filter` 方法筛选出 key 值等于 "name" 或 "code" 的数据项。
3. 使用 `collect` 方法将筛选结果收集到一个新的集合中。
4. 使用 `groupingBy` 方法将收集结果按照 key 进行分组。
5. 使用 `get` 方法获取 key 值等于 "name" 的数据项的 value。
6. 使用 `get` 方法获取 key 值等于 "code" 的数据项的 value。
以下是一个示例代码,演示如何使用 Stream 流实现这个功能:
```java
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
class Data {
private String key;
private String value;
public Data(String key, String value) {
this.key = key;
this.value = value;
}
public String getKey() {
return key;
}
public String getValue() {
return value;
}
}
public class Main {
public static void main(String[] args) {
// 示例数据集合
List<Data> dataList = new ArrayList<>();
dataList.add(new Data("name", "Alice"));
dataList.add(new Data("age", "25"));
dataList.add(new Data("code", "12345"));
dataList.add(new Data("city", "New York"));
// 使用 Stream 流获取 key 值等于 "name" 和 "code" 的数据
Map<String, Data> resultMap = dataList.stream()
.filter(data -> data.getKey().equals("name") || data.getKey().equals("code"))
.collect(Collectors.toMap(Data::getKey, data -> data));
// 获取 key 值等于 "name" 的数据项的 value
String nameValue = resultMap.get("name").getValue();
// 获取 key 值等于 "code" 的数据项的 value
String codeValue = resultMap.get("code").getValue();
// 输出结果
System.out.println("Name Value: " + nameValue);
System.out.println("Code Value: " + codeValue);
}
}
```
在上述示例中,我们使用 Stream 流对数据集合 `dataList` 进行操作。首先,我们使用 `stream()` 方法将集合转换为 Stream 对象。然后,使用 `filter()` 方法筛选出 key 值等于 "name" 或 "code" 的数据项。接着,使用 `collect()` 方法将筛选结果收集到一个新的集合中,并使用 `toMap()` 方法将 key 和 value 对应起来。然后,我们使用 `get()` 方法从结果集合中获取 key 值等于 "name" 的数据项的 value 和 key 值等于 "code" 的数据项的 value,并输出结果。
根据示例数据集合,输出结果将是:
```
Name Value: Alice
Code Value: 12345
```
阅读全文