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));


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM