有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Java8转换为Java。util。从流对象映射

workspaceproject实例对象与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()));

enter image description here


共 (1) 个答案

  1. # 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()

    编辑:

    it is causing the issue while runtime. illegal state exception. Normally if we add duplicate key in hashmap, it will allow and update value alone.

    您正在使用的Collectors.toMap的变体不允许重复密钥。必须使用需要合并函数的变量