繁体   English   中英

组 <T> 在地图内 <K,V> 在Java中

[英]Set<T> within a Map<K,V> in Java

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

我的想法是将HashSet<T> projects用作我的雇员类的成员变量。 但是,我想对数据库执行查询,该查询将以Map>项的形式返回查询结果,其中int将是employeeId,而Set将是项目。 完全可行吗?

这绝对是可行的。 看来您正在实现员工与项目之间的多对多关系。 这将与带有连接表的连接表的一对表相对应。

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

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

试试这个

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();
 }
}

话虽这么说,我认为您可能只需要雇员的退货清单,因为雇员将拥有雇员编号和项目

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM