1
真的很想知道爲什麼鏈表中的indexof()沒有利用「header」條目有一個null元素來提高性能,當它傳遞一個null「target 「:LinkedList的indexOf()與lastIndexOf()方法的優化
public int indexOf(Object o) {
int index = 0;
if (o==null) {
// header.element guaranteed null, no chance of looping past header
for (Entry e = header.next; e.element != null; e = e.next) {
index++;
}
// if index < size, null was found, else we looped to header
return (index < size) ? index: -1;
} else {
for (Entry e = header.next; e != header; e = e.next) {
if (o.equals(e.element))
return index;
index++;
}
}
return -1;
}
如果我們將一個類似的轉變,以lastIndexOf()它產生非常漂亮的結果:
public int lastIndexOf(Object o) {
int index = size - 1;
if (o==null) {
for (Entry e = header.previous; e.element != null;
e = e.previous, index--);
} else {
for (Entry e = header.previous; e != header && !o.equals(e.element);
e = e.previous, index--);
}
return index;
}
它是故意的嗎?
此代碼來自哪裏?根據評論,這個列表的頭部總是有一個空元素。那麼你想介紹哪種優化? –