2009-05-02 175 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);