Java8转换为Java。util。从流对象映射
workspace
和project
实例对象与Rally
对象相关联,后者保存在List
对象中
class Rally {
Workspace workspace;
public Workspace getWorkspace() {
return workspace;
}
public void setWorkspace(Workspace workspace) {
this.workspace = workspace;
}
public Project getProject() {
return project;
}
public void setProject(Project project) {
this.project = project;
}
Project project;
Rally(String name, Workspace workspace, Project project) {
this.workspace = workspace;
this.project = project;
}
}
class Workspace {
public Workspace(String id) {
this.id = id;
}
private String id;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
}
class Project {
private String id;
public Project(String id) {
super();
this.id = id;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
}
如何把workspace
{project
{HashMap
rallyInList.stream().collect(Collectors.toMap(r->r.getWorkspace().getId(),b->b.getProject().getId()));
# 1 楼答案
您的流管道基本上是正确的
您只需要将结果分配给
Map
。假设getId()
方法返回String
:还要确保您使用的所有方法都实际存在(例如,它应该是
getId()
,而不是getID()
)编辑:
您正在使用的
Collectors.toMap
的变体不允许重复密钥。必须使用需要合并函数的变量