ArrayList<String> arrayList=new ArrayList<>();
arrayList.add("张三,23");
arrayList.add("王五,25");
arrayList.add("赵丽颖,21");
笔者这里认为 Function<T, K> 第一个泛型为键值原来是啥类型,第二个泛型是键值需要是什么类型。如第二个 Function<T, V>原来是String类型,我们目的是获取Integer类型。IDEA自动生成有一定差异,需要手动根据需求修改一下。
Map<String, Integer> collect1 = arrayList.stream().filter(s -> Integer.parseInt(s.split(",")[1]) >= 20).collect(
Collectors.toMap(new Function<String, String>() {
@Override
public String apply(String s) {
return s.split(",")[0];
}
}, new Function<String, Integer>() {
@Override
public Integer apply(String s) {
return Integer.parseInt(s.split(",")[1]);
}
})
);```
**lambda改造**
```java
Map<String, Integer> collect1 = arrayList.stream().filter(s -> Integer.parseInt(s.split(",")[1]) >= 20).collect(
Collectors.toMap(k -> k.split(",")[0],
v -> Integer.parseInt(v.split(",")[1]))
);
System.out.println(collect1);