Mengenai isu pelaksanaan koleksi java LinkedList
过去多啦不再A梦
过去多啦不再A梦 2017-06-23 09:14:09
0
2
954
public E removeLast() {
    final Node<E> l = last;
    if (l == null)
        throw new NoSuchElementException();
    return unlinkLast(l);
}

terakhir ialah pembolehubah ahli Mengapa tidak menggunakannya secara langsung dalam kaedah dan bukannya memberikannya kepada pembolehubah tempatan akhir?

过去多啦不再A梦
过去多啦不再A梦

membalas semua(2)
typecho

Tengok kod

    transient Node<E> last;

yang terakhir adalah sementara, bukan? Jika anda menetapkannya kepada pembolehubah akhir setempat, anda tidak perlu menyemak nilai setiap kali anda menggunakan yang terakhir, bukan?

巴扎黑

Sebahagian daripada sebabnya adalah untuk memastikan keselamatan benang. Dengan mengandaikan bahawa kaedah ini tidak menggunakan pembolehubah l tetapi secara langsung merujuk kepada ahli terakhir, maka penghakiman menjadi if(this.last == null)。如果通过判断之后的瞬间,last 被赋值成了 null,那么下一句 unlinkLast(this.last) dan keputusan yang tidak diketahui akan berlaku.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan