コンパイラコレクターで一般的なエラーを与えてtoMap

バーラトBhagat:

私が収集する必要が前記私は1つの単純な式を書いていたMapString配列からインデックスのリストVS。私が使用しようとしていますことを行うために、

 Collectors.toMap(keyMapper, valueMapper, mergeFunction).

その要旨は以下の通りです。

    Map<String, List<Integer>> sortedStringToIndex = IntStream.range(0, strs.length)
 .mapToObj(i -> new AbstractMap.SimpleEntry<String,Integer>(sortString(strs[i]),i))
 .collect(Collectors.toMap((Map.Entry<String,Integer> pair) -> pair.getKey(),
            (Map.Entry<String,Integer> pair) -> {
        List<Integer> val = new ArrayList<>(){{add(pair.getValue());}};
        return val;
        }, (List<Integer> index1, List<Integer> index2) ->  index1.addAll(index2)));

しかし、それは私に、次のエラーが発生します。

方法java.util.stream.Collectors.toMap(java.util.function.Function、java.util.function.Function、java.util.function.BinaryOperator)が適用されない(推論変数Uは、互換性のない境界の等式制約があります。java。 util.List下限:java.lang.Booleanの、java.util.Listに)

誰かがコンパイルエラーとどのようにこの問題を解決するに説明していただけます。前もって感謝します

アンドロニカス:

見てくださいJavadocをので、それはだList#addAll生成しboolean、それが下流の関数として使用することはできません。あなたはストリームを使用することができます。

Stream.concat(index1.stream(), index2.stream())
                         .collect(Collectors.toList())

またはApacheコモンズのコレクションを使用しました:

ListUtils.union(index1, index2)

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=330472&siteId=1