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++; }
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; }
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 elemenAkhir 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;
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!