一个list集合里面包含很多数字 使用stream流把他变为一个map。key是id,value是这个数字出现的次数
时间: 2024-02-21 18:01:07 浏览: 22
可以使用Java 8的Stream API来实现这个需求。代码如下:
```java
List<Integer> list = Arrays.asList(1, 2, 3, 4, 1, 2, 3, 1, 2, 1);
Map<Integer, Long> map = list.stream()
.collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));
System.out.println(map);
```
输出结果为:
```
{1=4, 2=3, 3=2, 4=1}
```
其中,`Collectors.groupingBy()`方法可以将元素按照指定的规则分组,这里使用`Function.identity()`表示按照元素本身分组;`Collectors.counting()`方法则用于统计每个分组中元素的数量。最终得到的结果是一个Map,其中key为元素的id,value为元素出现的次数。
相关问题
java stream流 list转map map的key是一个自增的数字,value是list其中一个对象的id 需要判断id是否为空
可以使用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"表示。
使用stream流将List<String> 转成Map,key是List里面的元素。value是常量值222
可以使用 Java 8 中的流(Stream)来将 List<String> 转成 Map,其中 key 是 List 中的元素,value 是常量值 222。具体实现代码如下:
```java
List<String> list = Arrays.asList("key1", "key2", "key3");
Map<String, Integer> map = list.stream()
.collect(Collectors.toMap(s -> s, s -> 222));
System.out.println(map);
```
上述代码中,使用 toMap() 方法将 List 中的每个元素转成 Map 的 key,将常量值 222 转成 Map 的 value。其中,toMap() 方法的第一个参数表示 Map 的 key,第二个参数表示 Map 的 value。
输出结果为:
```
{key1=222, key2=222, key3=222}
```