package com.zyp.test;
import com.google.common.collect.Lists;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class MapKey {
private Integer id;
private String name;
public static void main(String[] args) {
List<MapKey> list= Lists.newArrayList();
MapKey mapKey=new MapKey(1,"张三");
list.add(mapKey);
mapKey=new MapKey(2,"李四");
list.add(mapKey);
mapKey=new MapKey(1,"王五");
list.add(mapKey);
mapKey=new MapKey(3,null);
list.add(mapKey);
list.forEach(i->{
System.out.println(i);
});
//收集一下属性和对象本身 其中(v1,v2)->v1为key重复值时覆盖策略
Map<Integer, MapKey> map = list.stream().collect(Collectors.toMap(MapKey::getId, o -> o,(v1,v2)->v1));
//收集一下属性(key)与另一个属性(value),若另一个属性的值不能为null,解决方法有2种
//方法1:过滤value为null的
Map<Integer, String> map1 = list.stream().filter(i->i.getName()!=null).collect(Collectors.toMap(MapKey::getId, MapKey::getName, (v1, v2) -> v1));
//方法2,:替换value为null的值
Map<Integer, String> map2 = list.stream().collect(Collectors.toMap(MapKey::getId,i->i.getName()==null?"":i.getName() , (v1, v2) -> v1));
map2.forEach((K,V)->{
System.out.println(K+":"+V);
});
}
}
Collectors.toMap的详细使用
于 2023-01-11 11:13:51 首次发布
该代码示例展示了如何在Java中使用Lombok注解创建一个MapKey类,并通过stream和Collectors将List转换为Map,处理重复键的合并策略。同时,展示了两种处理Map中value为null的情况:过滤null值和用空字符串替换null值。
摘要由CSDN通过智能技术生成