Fer*_*ndo 2 java collections equals
为什么这些方法contains()和indexOf()使用已定义的Java集合框架o.equals(e),而不是e.equals(o)(其中o是方法的参数,并且e是该元素的集合)?
谁知道原因?
Dav*_*d M 16
因为o已知不是null,但e不一定.从以下代码中获取此示例LinkedList:
for (Entry e = header.next; e != header; e = e.next) {
if (o.equals(e.element))
return index;
index++;
}
Run Code Online (Sandbox Code Playgroud)
在此示例中,以这种方式执行此操作可避免e.element为集合中的每个项目保护以防止为null.这是考虑为onull 的完整代码:
if (o == null) {
for (Entry e = header.next; e != header; e = e.next) {
if (e.element == null)
return index;
index++;
}
} else {
for (Entry e = header.next; e != header; e = e.next) {
if (o.equals(e.element))
return index;
index++;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9044 次 |
| 最近记录: |