在Java中的地图<K,V>中设置<T>
Set<T> within a Map<K,V> in Java
我想知道是否可以将 Set 成员添加为 class 的成员变量,然后可以将其对象作为值放入 Map。
我的想法是使用 HashSet<T> projects
作为我的员工 class 的成员变量。但是,我想对数据库执行查询,该查询将 return 查询结果作为 Map> 项,其中 int 是 employeeId,Set 是项目。完全可行吗?
这绝对可行。看起来您正在实施员工和项目之间的多对多关系。这将对应于一对 table 和一个 连接点 table 来连接它们。
您会阅读您的员工和您的项目,然后将项目添加到每个员工集。
我应该提一下,公开一个集合作为成员变量不是一个好主意,因为集合是mutable。您可以将变量设为私有,并将方法公开给对象中的 add/query 个项目。
尝试这样的事情
class Project{
int pid;
int name;
//Getter and setter
}
创建员工class
public class Employee {
int employeeId;
String name;
Set<Project> projects;
//getter , setter or add methods
}
现在你可以在 DAO 中使用以上两个 classes
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();
}
}
话虽如此,我认为您可能只需要 return 员工列表,因为员工将拥有员工 ID 和项目
public List<Employee> getEmployees(){
//create list of Employee object
}
我想知道是否可以将 Set 成员添加为 class 的成员变量,然后可以将其对象作为值放入 Map。
我的想法是使用 HashSet<T> projects
作为我的员工 class 的成员变量。但是,我想对数据库执行查询,该查询将 return 查询结果作为 Map> 项,其中 int 是 employeeId,Set 是项目。完全可行吗?
这绝对可行。看起来您正在实施员工和项目之间的多对多关系。这将对应于一对 table 和一个 连接点 table 来连接它们。
您会阅读您的员工和您的项目,然后将项目添加到每个员工集。
我应该提一下,公开一个集合作为成员变量不是一个好主意,因为集合是mutable。您可以将变量设为私有,并将方法公开给对象中的 add/query 个项目。
尝试这样的事情
class Project{
int pid;
int name;
//Getter and setter
}
创建员工class
public class Employee {
int employeeId;
String name;
Set<Project> projects;
//getter , setter or add methods
}
现在你可以在 DAO 中使用以上两个 classes
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();
}
}
话虽如此,我认为您可能只需要 return 员工列表,因为员工将拥有员工 ID 和项目
public List<Employee> getEmployees(){
//create list of Employee object
}