私は1つのArrayListに長方形を塗りつぶしています。私はキーにX座標があり、値が同じXコードのListであるMapにコンテンツを追加したい。マップに値を追加しているときに、互換性のない型
は私が機能
void dummyFun(List<Rectangle> listRects)
{
Map<Integer, List<Rectangle>> mapSameXCordRectangles = new HashMap<>();
listRects.forEach((Rectangle table) ->
{
if(mapSameXCordRectangles.containsKey(table.x))
{
mapSameXCordRectangles.get(table.x).add(table);
}
else
{
List<Rectangle> lstRect = new ArrayList<>();
lstRect.add(table);
mapSameXCordRectangles.put(table.x, lstRect);
}
});
}
を持っていることによって、これを行うことができますが、私は以下のようなものであれば-else文を削除します。
void dummyFun1(List<Rectangle> listRects)
{
Map<Integer, List<Rectangle>> mapSameXCordRectangles = new HashMap<>();
List<Rectangle> lstTemp = new ArrayList<>();
listRects.forEach((Rectangle table) ->
{
mapSameXCordRectangles.put(table.x,mapSameXCordRectangles.containsKey(table.x) ? mapSameXCordRectangles.get(table.x).add(table): new ArrayList<>().add(table));
});
}
これを行うと、ブール値をリストに変換できないため、エラーが発生します。 新しいRectangleをマップのArrayListに追加するか、新しいArrayListを作成すると、ArrayListを返す代わりにブール値が返されます。
どうすればいいですか?あなたのブール
mapSameXCordRectangles.put(
table.x,
mapSameXCordRectangles.containsKey(table.x) ?
mapSameXCordRectangles.get(table.x).add(table) :
new ArrayList<>().add(table));
:私はあなたがgroupingBy
Map<Integer, List<Rectangle>> map = listRects.stream()
.collect(Collectors.groupingBy(r -> r.x));
提案に感謝します。 – nandeesh
ようこそ。 – GhostCat