java8中map转string_jdk8的特性stream().map()将对象转换成另一个对象
时间: 2024-03-26 17:34:43 浏览: 82
在Java 8中,可以使用Stream API中的map()方法将一个对象转换成另一个对象。具体来说,可以使用map()方法将一个Map对象转换成一个String对象。
下面是一个示例代码:
```java
Map<String, String> map = new HashMap<>();
map.put("key1", "value1");
map.put("key2", "value2");
String str = map.entrySet().stream()
.map(entry -> entry.getKey() + ":" + entry.getValue())
.collect(Collectors.joining(","));
System.out.println(str);
```
在上面的代码中,首先定义了一个Map对象,然后使用entrySet()方法将其转换成一个Set对象,然后使用stream()方法将其转换成一个Stream对象。接着使用map()方法将每个Map.Entry对象转换成一个String对象,每个String对象都表示一个键值对。最后使用collect()方法将所有的String对象合并成一个字符串,每个字符串之间使用逗号分隔。
输出结果为:
```
key1:value1,key2:value2
```
这个字符串表示了原始的Map对象中的所有键值对。
相关问题
Map<Object, Object> 转成Map<String, Object> jdk8
在Java 8中,可以使用Stream API和Lambda表达式来实现Map<Object, Object>转换为Map<String, Object>。下面是一个示例代码:
```java
import java.util.HashMap;
import java.util.Map;
import java.util.stream.Collectors;
public class MapConversionExample {
public static void main(String[] args) {
// 创建一个Map<Object, Object>
Map<Object, Object> originalMap = new HashMap<>();
originalMap.put("key1", "value1");
originalMap.put(2, "value2");
originalMap.put("key3", 3);
// 使用Stream API和Lambda表达式进行转换
Map<String, Object> convertedMap = originalMap.entrySet().stream()
.collect(Collectors.toMap(
entry -> entry.getKey().toString(),
Map.Entry::getValue
));
// 打印转换后的Map
System.out.println(convertedMap);
}
}
```
运行以上代码,输出结果为:
```
{key1=value1, 2=value2, key3=3}
```
在上述代码中,我们使用了`entrySet()`方法获取原始Map的键值对集合,并使用`stream()`方法将其转换为流。然后,使用`Collectors.toMap()`方法将流中的每个键值对转换为新的键值对,并将其收集到新的Map中。在`Collectors.toMap()`方法中,我们使用Lambda表达式将原始Map的键转换为字符串类型,并保留原始Map的值。
JDK21 stream list 转map
在Java 11及更高版本中,你可以使用Java Stream API将List转换为Map。Stream API提供了一种方便的方法来进行集合操作,包括转换。下面是一个示例,展示如何使用流(Stream)将List转换为Map,假设我们有一个Person对象的List,每个Person有一个名字和年龄:
```java
import java.util.*;
import java.util.stream.Collectors;
// 假设Person类有两个属性,name和age
class Person {
String name;
int age;
// constructor, getters and setters
}
List<Person> personList = Arrays.asList(
new Person("Alice", 25),
new Person("Bob", 30),
new Person("Charlie", 35)
);
// 使用Stream转换List到Map,这里假设每个人的名字唯一
Map<String, Integer> map = personList.stream()
.collect(Collectors.toMap(Person::getName, Person::getAge));
// 现在map中,key是person的名字,value是对应的人的年龄
```
在这个例子中,`Collectors.toMap()`方法接受两个函数参数,第一个函数用于从Person对象获取Map的key(名字),第二个函数获取value(年龄)。如果List中有重复的key,通常情况下,最后一个映射到Map中的值会被保留。
阅读全文