1:toMap的3种重载方法
- toMap(Function<? super T, ? extends K> var0, Function<? super T, ? extends U> var1)
- toMap(Function<? super T, ? extends K> var0, Function<? super T, ? extends U> var1, BinaryOperator var2)
- toMap(Function<? super T, ? extends K> var0, Function<? super T, ? extends U> var1, BinaryOperator var2, Supplier var3)
2: 参数介绍
Function<? super T, ? extends K> var0
指定key
Function<? super T, ? extends U> var1
指定value
BinaryOperator var2
key值重复时的策略
Supplier var3
指定Map类型
3: 数据准备
4:使用案例
简单使用
/**
* 根据calories转换成map
*/
@Test
public void toMap1() {
List<Dish> dish1List = DishList.getDish1List();
Map<Integer, Dish> collect = dish1List.stream().collect(Collectors.toMap(Dish::getCalories, Function.identity()));
System.out.println(collect);
}
key值重复策略(使用覆盖模式)
/**
* 根据calories转换成map,如果key重复,则使用第二个
*/
@Test
public void toMap2() {
List<Dish> dish1List = DishList.getDish1List();
Map<Integer, Dish> collect = dish1List.stream().collect(Collectors.toMap(Dish::getCalories, Function.identity(), (dish1, dish2) -> dish2));
System.out.println(collect);
}
指定Map类型
/**
* 根据calories转换成map,如果有重复,则使用第二个,且Map指定使用TreeMap
*/
@Test
public void toMap3() {
List<Dish> dish1List = DishList.getDish1List();
TreeMap<Integer, Dish> collect = dish1List.stream().collect(Collectors.toMap(Dish::getCalories, Function.identity(), (dish1, dish2) -> dish2, TreeMap::new));
System.out.println(collect);
}