java8 lambda表达式处理map

public class Student {
    private String id;
    private String name;
    private String level;
}
List<Student> list = new ArrayList<>();
list.add(new Student("1","张三" + 1,"A" + 1));
list.add(new Student("2","张三" + 2,"A" + 2));
list.add(new Student("1","张三" + 3,"A" + 3));
list.add(new Student("4","张三" + 4,"A" + 4));
list.add(new Student("5","张三" + 5,"A" + 5));
		/**
		 * map有3种重载
		 */
		//1 仅返回key,value的映射关系
		Map<String, String> map1 = list.stream()
			.collect(
					Collectors
						.toMap(
								Student::getId, 
								Student::getName));
		
		//2 用于针对有重复键的映射关系
		Map<String, String> map2 = list.stream()
			.collect(
					Collectors
						.toMap(
								//用id做map的key,name做map的val,
								//同一个key,可能会有多个val,用新val还是老val
								//可以这样设置
								item -> item.getId(), 
								item -> item.getName(), 
								(oldVal, currVal) -> oldVal));
		
		//3 用于返回某些特定map
		Map<String, String> map3 = list.stream()
				.collect(
						Collectors
							.toMap(
									//用id做map的key,name做map的val,
									//同一个key,可能会有多个val,用新val还是老val
									//可以这样设置
									item -> item.getId(), 
									item -> item.getName(), 
									(oldVal, currVal) -> oldVal,
									HashMap::new));
posted @ 2022-01-10 10:12  卡卡罗特琪琪  阅读(882)  评论(0编辑  收藏  举报