2012-06-30 70 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而不是使用集合。