我有一个Foo包含这些字段的课程:
id:int/name; String/targetCost:BigDecimal/actualCost:BigDecimal
我得到了这个类的对象的arraylist.例如:
new Foo(1, "P1", 300, 400),
new Foo(2, "P2", 600, 400),
new Foo(3, "P3", 30, 20),
new Foo(3, "P3", 70, 20),
new Foo(1, "P1", 360, 40),
new Foo(4, "P4", 320, 200),
new Foo(4, "P4", 500, 900)
Run Code Online (Sandbox Code Playgroud)
我想通过创建"targetCost"和"actualCost"的总和并将"行"分组来转换这些值,例如
new Foo(1, "P1", 660, 440),
new Foo(2, "P2", 600, 400),
new Foo(3, "P3", 100, 40),
new Foo(4, "P4", 820, 1100)
Run Code Online (Sandbox Code Playgroud)
我现在写的:
data.stream()
.???
.collect(Collectors.groupingBy(PlannedProjectPOJO::getId));
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
我有一个带有 SelectionMode.MULTIPLE 的 tableview:
table.setEditable(true);
table.getSelectionModel().setSelectionMode(SelectionMode.MULTIPLE);
table.getSelectionModel().selectedItemProperty().addListener(
(observable, oldValue, newValue) -> {
table.getSelectionModel().getSelectedItems().forEach(System.out::println);
});
Run Code Online (Sandbox Code Playgroud)
选择行可以找到,但是如果再次取消选择一行(通过单击 ctrl+左键单击),侦听器不会立即对此做出反应。我必须做的取消选择一行如下:
