java stream流 list转map map的key是一个自增的数字,value是list其中一个对象的id 需要判断id是否为空
时间: 2024-04-30 16:23:04 浏览: 145
关于map的 一个key对应多个value
可以使用Java 8的Stream流和Collectors工具类将List转换为Map,其中Map的key是一个自增的数字,value是List中的一个对象的id。判断id是否为空可以使用Optional类来避免空指针异常。
以下是一个示例代码:
```java
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.stream.Collectors;
import java.util.stream.IntStream;
public class ListToMapExample {
public static void main(String[] args) {
List<MyObject> myObjects = List.of(
new MyObject("1", "Object1"),
new MyObject(null, "Object2"),
new MyObject("3", "Object3")
);
Map<Integer, String> map = IntStream.range(0, myObjects.size())
.boxed()
.collect(Collectors.toMap(
i -> i + 1,
i -> Optional.ofNullable(myObjects.get(i).getId()).orElse("null")
));
System.out.println(map);
}
}
class MyObject {
private String id;
private String name;
public MyObject(String id, String name) {
this.id = id;
this.name = name;
}
public String getId() {
return id;
}
public String getName() {
return name;
}
}
```
输出结果为:
```
{1=1, 2=null, 3=3}
```
说明成功将List转换为了Map,其中key是自增的数字,value是List中的一个对象的id,如果id为空,则使用字符串"null"表示。
阅读全文