.stream流 取对象中的一个值为key, 对象为value
时间: 2024-11-24 16:41:48 浏览: 3
Java Stream API 提供了一个非常方便的功能,即`map()`操作,可以将集合(如List、Map等)转换成一个新的流(Stream),在这个过程中你可以对每个元素应用一个函数,这个函数通常会返回一个新的键值对。如果你想基于某个对象的属性作为Key,而该对象本身作为Value,你可以这样做:
假设你有一个Person对象列表(List<Person>),Person类有name属性,你可以通过以下步骤获取每个人的姓名作为新的Key,Person对象作为Value:
```java
List<Person> personList = ...; // 假设这是你的Person对象列表
Map<String, Person> keyValueStream = personList.stream()
.collect(Collectors.toMap(Person::getName, Function.identity()));
```
这里`Person::getName`是一个方法引用,它表示取每个Person对象的name属性作为键;`Function.identity()`是一个默认的函数,用于保持原对象不变,作为值。
相关问题
entrySet().stream()将key值换成value值里的其中一个属性,value值换成属性拼接的字符
串,可以使用如下代码实现:
```
map.entrySet().stream()
.map(entry -> entry.getValue().getProperty() + entry.getValue().getOtherProperty())
.forEach(System.out::println);
```
其中,`getProperty()`和`getOtherProperty()`是`value`值所包含的某些属性的方法。你需要将它们替换为相应的方法名。这段代码会遍历`map`中的每一个键值对,将`value`值中的属性拼接成字符串,并打印出来。
entrySet().stream()将key值换成value值里的其中一个属性,value值换成属性拼接的字符,然后返回成新的hashmap
可以使用Java 8中的Stream API来实现这个操作。代码如下:
```
Map<String, MyObject> originalMap = new HashMap<>();
// 假设原始map已经被填充好了
Map<String, String> newMap = originalMap.entrySet().stream()
.collect(Collectors.toMap(
Map.Entry::getKey,
entry -> entry.getValue().getProperty() + entry.getValue().getOtherProperty()
));
```
这里假设`MyObject`类有两个属性`property`和`otherProperty`,需要将它们拼接成一个字符串作为新的value值。你可以根据实际情况修改这个表达式。
阅读全文