lambda foreach添加到地图不起作用

Ing*_*nge 1 java javafx-8

我得到了以下变量

List<Pruefvorschrift> listP = new ArrayList<Pruefvorschrift>();
ObservableMap<TestDevice,List<Pruefvorschrift>> testDev = FXCollections.emptyObservableMap();
Run Code Online (Sandbox Code Playgroud)

在一个函数中,我想通过使用lambda表达式填充testDev

//first call REST service and get data
List<TestDevice> test_dev = call.getTestDevice("");
//now do a foreach to add each entry (as key) to the testDev ObservableMap with a empty List (as value)
test_dev.stream().forEach(td ->{
                    TestDevice t = td;                    
                    testDev.put(t, listP);
            });
Run Code Online (Sandbox Code Playgroud)

但我得到的只是一个错误

java.util.AbstractMap.put上的java.lang.UnsupportedOperationException(AbstractMap.java:209)

这显然是这一行

 testDev.put(t, listP);
Run Code Online (Sandbox Code Playgroud)

也许我误解了新的流api,但我只想填充可观察的地图,其中包含调用的所有结果(键)和一个空的List(稍后将修改的值).有帮助吗?谢谢

Sot*_*lis 5

无论Map返回什么类型FXCollections#emptyObservableMap

FXCollections.emptyObservableMap();
Run Code Online (Sandbox Code Playgroud)

不支持该put方法.你不能添加任何东西.正如javadoc所述

创建并[sic]清空不可修改的可观察列表.

这与lambda表达式或Streamapi 无关.