3

文字列がある場合Map<Character, List<Integer>>を作成して、各文字がストリームを使用しているときにどのようなインデックスを生成するのを作成しますか?これは私が現在持っているもので、これを行うにはよりエレガントな方法がありますか?Java 8の2つのリストのマージ関数

Map<Character, List<Integer>> occurs = IntStream.range(0, str.length()) 
    .boxed() 
    .collect(toMap(str::charAt , Arrays::asList, (v1, v2) -> { 
     List<Integer> list = new ArrayList<>(); 
     list.addAll(v1); 
     list.addAll(v2); 
     return list; 
    })); 

答えて

2

あなたは、この動作を自分で実装する必要はありません - ちょうどビルトインCollectors#groupingByを使用します。

Map<Character, List<Integer>> occurs = 
    IntStream.range(0, str.length()) 
      .boxed() 
      .collect(Collectors.groupingBy(str::charAt)); 
関連する問題