美文网首页
java8 stream colloctors的toMap用法

java8 stream colloctors的toMap用法

作者: peerben | 来源:发表于2019-02-27 19:12 被阅读0次

https://www.baeldung.com/java-8-collectors

toMap提供三个参数
keyMapper
valueMapper
mergeFunction: BinaryOperator
其中mergeFunction是解决当key相同时,取哪个value的问题,由返回值指定,当返回null时,从map中移除当前entry

package stream;

import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors;

import static java.util.stream.Collectors.toSet;

public class ToMap {
  public static void main(String[] args) {
    List<String> duplicateList = Arrays.asList("a", "bb", "c", "d", "bb");

    Map<String, String> map = duplicateList
      .stream()
      .collect(
        Collectors.toMap(
          Function.identity(),
          s -> {
            return s.length() + " " + (new Random()).nextInt();
          },
          (preItem, nextItem) -> {
            System.out.println("item" + preItem + " curItem: " + nextItem);
            return nextItem;
          }
        )
      );

    System.out.println(map);

    List<String> givenList = Arrays.asList("a", "bb", "dd", "ccc");
    Map<Integer, Set<String>> groupList = givenList
      .stream()
      .collect(Collectors.groupingBy(
        String::length,
        toSet()
      ));

    System.out.println(groupList);
  }
}

相关文章

网友评论

      本文标题:java8 stream colloctors的toMap用法

      本文链接:https://www.haomeiwen.com/subject/zhqquqtx.html