将键值映射到Java 8流中的对象

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的类.

Ous*_* D. 9

使用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方法的类在哪里.