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
id
和project
id
转到另一个HashMap
?
rallyInList.stream().collect(Collectors.toMap(r->r.getWorkspace().getId(),b->b.getProject().getId()));
答案 0 :(得分:1)
您的流管道基本上是正确的。
您只需将结果分配给Map
即可。假设getId()
方法返回String
:
Map<String,String> map =
rallyInList.stream()
.collect(Collectors.toMap(r->r.getWorkspace().getId(),
r->r.getProject().getId(),
(v1,v2)->v2));
还要确保您使用的所有方法确实存在(例如,它应该是getId()
,而不是getID()
)。
编辑:
它在运行时导致问题。非法国家例外。通常,如果我们在hashmap中添加重复键,它将仅允许和更新值。
您使用的Collectors.toMap
变体不允许重复键。您必须使用需要合并功能的变体。