fas*_*ava 3 java mapping constructor java-8 java-stream
假设我有这段代码:
Map<String, String> map;
// later on
map.entrySet().stream().map(MyObject::new).collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)
我有一个MyObject Constructor类型的两个参数String.我希望能够做到这一点,但我做不到.我知道我可以做e -> new MyObject(e.getKey(), e.getValue())但更喜欢MyObject::new.
类似的代码可用于Set<String>和List<String>与一个参数的构造函数MyObject的类.
使用lambda:
map.entrySet()
.stream()
.map(e -> new MyObject(e.getKey(), e.getValue()))
.collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)
否则,使用方法引用的唯一方法是通过创建一个函数:
private static MyObject apply(Map.Entry<String, String> e) {
return new MyObject(e.getKey(), e.getValue());
}
Run Code Online (Sandbox Code Playgroud)
然后做类似的事情:
map.entrySet()
.stream()
.map(Main::apply)
.collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)
Main包含该apply方法的类在哪里.
| 归档时间: |
|
| 查看次数: |
3258 次 |
| 最近记录: |