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;
	}
	
}
经验分享 程序员 微信小程序 职场和发展