使用流和收集器生成HashMap是可能的吗? 我尝试了以下代码:
myList.stream()
.map(Label::new)
.collect(Collectors.toMap(Function.identity(), PasswordField::new))
但显然它不起作用,我尝试了其他解决方案,但都没有成功。您有什么建议吗?
使用流和收集器生成HashMap是可能的吗? 我尝试了以下代码:
myList.stream()
.map(Label::new)
.collect(Collectors.toMap(Function.identity(), PasswordField::new))
但显然它不起作用,我尝试了其他解决方案,但都没有成功。您有什么建议吗?
PasswordField
类只有一个默认构造函数,这意味着 PasswordField::new
将不起作用,因为它相当于 (Label l) -> new PasswordField(l)
。而应该使用值映射器 (Label l) -> new PasswordField()
或者简单的 l -> new PasswordField()
;
Label
在map
步骤中创建而不是在toMap
收集器内部创建,即myList.stream() .collect(Collectors.toMap(Label::new, s -> new PasswordField()))
... - HolgerPasswordField::new
不能工作。请改用l -> new PasswordField()
代替:myList.stream()
.map(Label::new)
.collect(Collectors.toMap(Function.identity(), l -> new PasswordField()));