Rumah >Java >javaTutorial >Tafsiran dokumentasi Java: Analisis fungsi kaedah indexOf() kelas LinkedList

Tafsiran dokumentasi Java: Analisis fungsi kaedah indexOf() kelas LinkedList

WBOY
WBOYasal
2023-11-03 12:26:111676semak imbas

Tafsiran dokumentasi Java: Analisis fungsi kaedah indexOf() kelas LinkedList

LinkedList ialah kelas pelaksanaan senarai terpaut dua kali dalam rangka kerja koleksi Java Ia boleh menambah atau memadam elemen secara dinamik dan menyokong operasi pemadaman dan pemadaman di mana-mana lokasi. Dalam kelas LinkedList, kaedah indexOf() ialah operasi yang biasa digunakan untuk mencari kedudukan di mana elemen yang ditentukan pertama kali muncul dalam senarai terpaut Artikel ini akan memperkenalkan secara terperinci fungsi kaedah ini dan cara menggunakannya .

Sintaks kaedah indexOf() kelas LinkedList adalah seperti berikut:

public int indexOf(Object o) {
    int index = 0;
    if (o == null) {
        for (Node<E> x = first; x != null; x = x.next) {
            if (x.item == null) {
                return index;
            }
            index++;
        }
    } else {
        for (Node<E> x = first; x != null; x = x.next) {
            if (o.equals(x.item)) {
                return index;
            }
            index++;
        }
    }
    return -1;
}

Kaedah ini menerima parameter jenis Objek o sebagai input, mewakili elemen yang akan ditemui. Kaedah ini mengembalikan nilai jenis int, menunjukkan kedudukan di mana elemen pertama muncul dalam senarai terpaut (bermula dari 0 Jika elemen tidak wujud dalam senarai terpaut, ia mengembalikan -1).

Untuk lebih memahami prinsip pelaksanaan kaedah ini, analisis fungsi terperinci kaedah ini akan dijalankan di bawah. . . Oleh itu, kaedah ini menggunakan dua untuk gelung, dan fungsinya masing-masing Ia adalah untuk melintasi senarai terpaut dan mencari elemen Kod adalah seperti berikut:

for (Node<E> x = first; x != null; x = x.next) {
    if (o.equals(x.item)) {
        return index;
    }
    index++;
}
    Kod ini bermakna bermula dari nod pertama senarai terpaut dan melintasi bahagian. nod senarai terpaut satu demi satu sehingga akhir senarai terpaut (iaitu, apabila x adalah batal). Semasa setiap traversal, kami menentukan sama ada elemen dalam nod semasa adalah sama dengan elemen yang akan ditemui Jika sama, kembalikan kedudukan nod dalam senarai terpaut (iaitu, pembolehubah indeks), jika tidak, teruskan ke traversal seterusnya.
Tentukan sama ada elemen itu wujud

Dalam proses merentasi nod, kita perlu menentukan sama ada elemen yang dinyatakan wujud dalam senarai terpaut. Pernyataan if digunakan dalam kaedah untuk melaksanakan fungsi ini Kodnya adalah seperti berikut:

if (o.equals(x.item)) {
    return index;
}
    Dalam pernyataan ini, o.equals(x.item) bermaksud untuk menentukan sama ada elemen yang diwakili oleh o adalah sama dengan elemen x. item dalam nod yang sedang digelungkan ke Jika ia sama, kembalikan kedudukan nod dalam senarai terpaut (iaitu, pembolehubah indeks), jika tidak, teruskan dengan traversal seterusnya.
  1. Perlu diambil perhatian bahawa apabila menentukan sama ada unsur wujud, jika elemen itu nol, item==null hendaklah digunakan dan bukannya o.equals(x.item). Oleh itu, kaedah ini juga memerlukan pernyataan if tambahan untuk mengendalikan situasi ini Kodnya adalah seperti berikut:
if (x.item == null) {
    return index;
}

x.item==null dalam pernyataan ini bermakna elemen dalam nod yang digelungkan pada masa ini adalah nol dijumpai juga Jika batal, kembalikan kedudukan nod dalam senarai terpaut (iaitu pembolehubah indeks), jika tidak, teruskan dengan traversal seterusnya.

Kembalikan kedudukan elemen

Akhir sekali, apabila elemen yang anda cari masih tidak ditemui selepas merentasi keseluruhan senarai terpaut, kaedah akan mengembalikan -1, menunjukkan bahawa elemen itu tidak wujud dalam senarai terpaut. Kodnya adalah seperti berikut:

return -1;
    Oleh itu, apabila menggunakan kaedah ini, kita harus menilai sama ada elemen yang kita cari wujud dalam senarai pautan berdasarkan nilai pulangan -1, ia bermakna elemen tersebut tidak wujud, jika tidak, nombor yang dikembalikan ialah Kedudukan kejadian pertama elemen ini dalam senarai terpaut.
  1. Berikut ialah contoh kod khusus untuk menggambarkan penggunaan kaedah ini:
import java.util.LinkedList;

public class LinkedListDemo {
    public static void main(String[] args) {
        LinkedList<String> list = new LinkedList<String>();
        list.add("apple");
        list.add("banana");
        list.add("grape");
        list.add("orange");
        list.add("peach");

        int index = list.indexOf("apple");
        if (index != -1) {
            System.out.println("apple在链表中的位置是:" + index);
        } else {
            System.out.println("链表中不存在apple");
        }

        index = list.indexOf("watermelon");
        if (index != -1) {
            System.out.println("watermelon在链表中的位置是:" + index);
        } else {
            System.out.println("链表中不存在watermelon");
        }
    }
}

Kod mula-mula mencipta senarai objek LinkedList dan menambah 5 elemen. Kemudian, ia menggunakan kaedah indexOf() untuk mencari kedudukan dua elemen "epal" dan "tembikai" dalam senarai terpaut, dan menentukan sama ada dua elemen itu wujud dalam senarai terpaut berdasarkan nilai pulangan, dan akhirnya mengeluarkan hasil.

Menjalankan kod ini, kita boleh mendapatkan output berikut:

apple在链表中的位置是:0
链表中不存在watermelon

Dapat dilihat bahawa kaedah ini sangat berkuasa dan boleh membantu kami mencari dengan cepat kedudukan elemen yang ditentukan dalam senarai terpaut dan melaksanakan logik perniagaan kami sendiri. Walau bagaimanapun, apabila menggunakan kaedah ini, sila ambil perhatian bahawa kerumitan masanya ialah O(n), iaitu apabila bilangan elemen senarai terpaut meningkat, masa carian akan menjadi lebih lama dan lebih lama, jadi apabila menggunakan kaedah ini, anda harus cuba untuk elakkan merentasi keseluruhan senarai Terpaut, tetapi harus dioptimumkan mengikut situasi sebenar.

Atas ialah kandungan terperinci Tafsiran dokumentasi Java: Analisis fungsi kaedah indexOf() kelas LinkedList. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn