1

如果我有一个 Employee 对象的 LinkedList...

每个员工都有一个姓名和一个 ID 字段。

我有linkedList调用列表....

如果我想查看列表中是否包含员工,我会这样做:

list.contains(someEmployeeObject)

如果我想查看列表是否包含基于员工 ID 的员工,怎么样?

假设我有以下方法:

public boolean containsEmployeeByID(int id)

我如何知道列表是否包含带有参数 id 的员工对象?

4

3 回答 3

4

只需遍历列表并查找匹配项。如果您经常这样做并且不经常更改列表,请先构建 Map 索引。

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

也就是说,将员工保存在 LinkedList 中?多么奇怪的示例问题...

于 2009-05-02T03:49:40.177 回答
1

也许您应该使用键是 ID 和值是员工姓名或员工对象的映射?

于 2009-05-02T03:54:13.020 回答
1

您可以覆盖您的 equals() 方法以根据 Id 进行比较,但这通常不是最佳实践。

另一种选择是创建一个 HashMap,然后您可以通过他们的 ID 检索您的员工。

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

String idLookup = "1234";

Employee employee = map.get(idLookup);
于 2009-05-02T03:54:34.143 回答