java list转map 保留第一个key
时间: 2023-10-13 22:26:38 浏览: 111
可以使用Java 8的Stream API来实现,具体代码如下:
```java
List<String> list = Arrays.asList("key1=value1", "key2=value2", "key1=value3");
Map<String, String> map = list.stream()
.map(s -> s.split("=", 2))
.collect(Collectors.toMap(
arr -> arr[0], // key
arr -> arr[1], // value
(v1, v2) -> v1 // merge function, 保留第一个key
));
System.out.println(map); // 输出: {key1=value1, key2=value2}
```
这里使用了`Collectors.toMap()`方法将`List`转换成`Map`,其中第一个参数是key的提取函数,第二个参数是value的提取函数,第三个参数是merge function,用于指定当key重复时如何合并value。在这里,我们指定保留第一个key的value,忽略后面重复的key。
相关问题
java list转map
可以使用Java 8中的Stream API来将List转换为Map,代码如下:
```java
Map<String, Object> map = list.stream().collect(Collectors.toMap(MyObject::getKey, MyObject::getValue));
```
其中,MyObject是List中元素的类型,getKey和getValue分别是MyObject中获取key和value的方法。如果List中元素的类型是Map.Entry,则可以直接使用Map.Entry的getKey和getValue方法。
另外,如果List中存在重复的key,可以使用下面的代码:
```java
Map<String, Object> map = list.stream().collect(Collectors.toMap(MyObject::getKey, MyObject::getValue, (v1, v2) -> v1));
```
其中,第三个参数是一个函数,用于解决重复key的冲突。上面的代码中,使用v1保留第一个key对应的值。
java list 转map
将一个List转换成Map,需要指定一个Key值,将这个Key值与List中的元素进行映射,可以按照以下方法实现:
```java
List<User> userList = new ArrayList<>();
userList.add(new User(1, "Tom"));
userList.add(new User(2, "Jerry"));
Map<Integer, User> userMap = userList.stream().collect(Collectors.toMap(User::getId, Function.identity()));
```
在以上代码中,User是一个类,有两个属性:id和name。我们将User对象存储在一个List中,然后使用Java 8的Stream API将List转换成Map,其中Key值是User对象中的id,Value值是对应的User对象。具体实现中使用了`Collectors.toMap`函数,第一个参数指定了Key值的获取方式,第二个参数指定了Value值的获取方式。在这里,我们使用了Java 8中的Lambda表达式,更加简洁和优雅。
阅读全文