在Java </k,v> </t>中的Map <k,v>中设置<t>

时间:2015-01-17 02:27:55

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

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

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

2 个答案:

答案 0 :(得分:2)

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

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

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

答案 1 :(得分:1)

尝试这样的事情

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
 }