バーラトBhagat:
私が収集する必要が前記私は1つの単純な式を書いていたMap
のString
配列からインデックスのリスト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)