【问题标题】:Set<T> within a Map<K,V> in Java在 Java 中的 Map<K,V> 中设置 <T>
【发布时间】:2023-03-16 02:52:01
【问题描述】:

我想知道是否可以将 Set 成员添加为类的成员变量,然后可以将其对象作为值放入 M​​ap。

我的想法是使用HashSet&lt;T&gt; projects 作为我的员工类的成员变量。但是,我想在数据库上执行一个查询,它将查询结果作为 Map> 项返回,其中 int 将是employeeId,而 Set 将是项目。真的可行吗?

【问题讨论】:

  • 数据库查询不会返回对象,只会返回一些原语。您必须构建Map
  • @mrres1 我已经知道了。我的问题不是那个。

标签: java aggregation composition class-diagram java-collections-api


【解决方案1】:

这绝对是可行的。看起来您正在实现员工和项目之间的多对多关系。这将对应于一对带有 联结表 的表来连接它们。

您会阅读您的员工和您的项目,然后将项目添加到每个员工集。

我应该提一下,将集合公开作为成员变量并不是一个好主意,因为集合是可变的。您可以将变量设为私有,并公开方法以从您的对象添加/查询项目。

【讨论】:

    【解决方案2】:

    试试这样的

    class Project{
         int pid;
         int name;
         //Getter and setter
    }
    

    创建员工类

    public class Employee {
         int employeeId;
         String name;
         Set<Project> projects;
         //getter , setter  or add methods
    }
    

    现在你可以在 DAO 中使用以上两个类了

    public class EmployeesDao{
    
     /* Get multiple employee-projects */
     public Map<Integer, Set<Project>> getManyEmployeeAndProjects(){
        Map<Integer, Set<Project>> emps = new HashMap<Integer, Set<Project>>();
        //query and populate 
        return emps;
    
     }
     /**
      * Get single employee
      */
     public Employee getEmployee(){
        //Query and return Employee
        return new Employee();
     }
    }
    

    话虽如此,我认为您可能只需要返回员工列表,因为员工将拥有员工 ID 和项目

     public List<Employee> getEmployees(){
       //create list of Employee object
     }
    

    【讨论】:

    • 看起来和我自己的想法一样。谢谢哥们! :)
    猜你喜欢
    • 2014-02-09
    • 1970-01-01
    • 2019-01-23
    • 2013-12-20
    • 1970-01-01
    • 1970-01-01
    • 2019-10-10
    • 2016-06-11
    • 2014-05-09
    相关资源
    最近更新 更多