2012-06-30 27 views
1

嘿,我只是想知道什么是最好的收集使用时创建一个员工的详细信息,如姓名,年龄地址,dob,工资和电子邮件地址的商店。该商店需要所有必要的基本功能,例如添加,编辑,删除,删除所有和searchBy。Java集合。一个员工店收集

+0

您期望的员工数量是多少? – Ian

回答

3

那么你可能想要一个快速搜索,所以一个哈希结构与关键作为你想要搜索的恶魔可能是最好的解决方案。例如,如果你想通过名称进行搜索,您可以创建一个类是这样的:

public class EmployeeStore { 
    private Map<String, Employee> employees; 

    public EmployeeStore() { 
     employees = new HashMap<String, Employee>(); 
    } 

    public void add(Employee e) { 
     employees.add(e.getName(), e); 
    } 

    public Employee searchByName(String name) { 
     return employees.get(name); 
    } 

    // etc. 
} 

并实现基于使用employees数据结构您的需求所需的方法。如果搜索是按名称完成的,则可以将该名称作为密钥字符串。

不幸的是,如果您有大量条目,则通过与索引不同的字段进行搜索需要进行线性搜索,速度会很慢。

2

只需创建一个类像下面的东西你的员工实体:

public class Employee 
{ 
String name; 
public void setName(String nm) 
{ 
this.name=nm; 
} 
public String getName() 
{ 
return this.name; 
} 
//Other variables and associated getter and setters 
} 

现在你可以创建员工对象的集合:

ArrayList<Employee> employees=new ArrayList<Employee>(); 

或者你可以使用任何其他集合你想。

然后,你需要实现你想你应该使用HashMapMap更快的搜索能力的方法,如

Update(), Delete() 

一些逻辑!

1

要使用的特定“最佳”集合取决于访问需求和数据约束。但是您可以将多个集合封装在单个EmployeeStore类中,以多种方式进行访问。

如果您需要通过名称进行搜索,并且可以保证名称是唯一的,则将名称存储为键的Map<String, Employee>可以让您快速找到具有给定名称的员工。如果名称不能保证是唯一的,则可能需要使用Map<String, List<Employee>>

对于基于其他字段的搜索,您可以使用适当的键维护其他地图。

您的add,removeedit方法的实现当然必须更新您使用的所有地图。

如果您的搜索比按键简单查找更复杂,或者您的数据很大,您可能需要将数据库备份到EmployeeStore而不是使用集合。