2009-05-02 131 views
1

如果我有一個Employee對象的LinkedList ...在LinkedList中查找元素

每個員工都有一個名稱和一個ID字段。

我有LinkedList的通話清單....

如果我想看看如果列表中包含僱員我做的:

list.contains(someEmployeeObject) 

怎麼樣,如果我想看看如果列表中包含根據該imployee ID僱員..

讓我們說我有以下方法:

public boolean containsEmployeeByID(int id) 

如何知道列表是否包含帶參數ID的員工對象?

+1

注意LinkedList的讀取性能並不好。即使get(int)也很慢。 ArrayList幾乎總是一個更好的主意。 – 2009-05-02 09:16:09

回答

4

只要走這個清單並尋找匹配。如果您經常這樣做並且不經意地更改列表,請首先創建一個Map索引。

List<Employee> list = ... 
for (Employee e : list) 
    if (e.getID() == id) 
     return true; 
return false; 

這就是說,將員工保存在LinkedList中?多麼奇怪的例子問題......

+0

只是一項家庭作業...... – user69514 2009-05-02 03:52:25

+2

然後說實話,你應該把問題標記爲家庭作業。我這次爲你做了...... – 2009-05-02 03:54:12

1

也許你應該使用一個映射,其中的鍵是一個ID和值是員工名稱或員工對象?

1

您可以重載您的equals()方法以根據Id進行比較,但這通常不是最佳做法。

另一種選擇是創建一個HashMap,然後您可以通過他們的Id檢索您的員工。

for (Employee empl : list) { 
    map.put(empl.getId(), empl); 
} 

String idLookup = "1234"; 

Employee employee = map.get(idLookup);