java8:封装lambda泛型工具类之list转为map
1
2
3
4
0 接之前姊妹篇
1 java8的lambda中的map的合并
2 最简单入门:java8的lambda中的map相关操作:基础及注意事项图文详解
1 main方法
public class LambdaToMapUtils {
public static void main(String[] args) {
List<User> list = new ArrayList<>();
for (Long i = 0L; i < 4; i++) {
User user = new User();
user.setId(i);
user.setAge(i);
user.setName(String.valueOf(i));
user.setAddress(String.valueOf(i));
list.add(user);
// 重复值:key相同value不同
user.setName(String.valueOf(i+1));
list.add(user);
}
// 方式一:泛型
// Map<Long, String> map =tomap(list,User::getId,User::getName,(k2,k1)->k2);
// 方式二:
// Map<Long, String> map = list.stream().collect(Collectors.toMap(User::getId, User::getName, (k1,k2)->k1));
Map<Long, String> map =tomap2(list,User::getId,User::getName);
System.out.println(map);
}
private static <T, K, V> Map<K, V> tomap(List<T> list,Function<? super T, ? extends K> keyMapper,
Function<? super T, ? extends V> valMapper,BinaryOperator<V> mergeFunction) {
// list 空值判断。。
Map<K, V> map =list.stream().
collect(Collectors.toMap(keyMapper, valMapper, mergeFunction));
return map;
}
private static <T, K, V> Map<K, V> tomap2(Collection<T> c,Function<? super T, ? extends K> keyMapper,
Function<? super T, ? extends V> valMapper) {
// list 空值判断。。
Map<K, V> map =c.stream().
collect(Collectors.toMap(keyMapper, valMapper, (k1,k2)->k2));
return map;
}
}
2 user对象
public class User {
String name;
String address;
Long id;
Long age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public Long getAge() {
return age;
}
public void setAge(Long age) {
this.age = age;
}
}
