Definisi antarmuka acak ACCHACKESS dalam dokumen JDK adalah sebagai berikut: Antarmuka Public ACORDACCESS
Berikut ini adalah terjemahan anotasi JDK
Daftar mengimplementasikan antarmuka penandaan yang digunakan untuk menunjukkan bahwa itu mendukung akses acak yang cepat (biasanya waktu tetap). Tujuan utama antarmuka ini adalah untuk memungkinkan algoritma umum mengubah perilaku mereka, sehingga memberikan kinerja yang baik ketika diterapkan pada daftar akses acak atau berkelanjutan.
Saat menerapkan algoritma terbaik untuk mengoperasikan daftar akses acak (seperti ArrayList) ke daftar akses berkelanjutan (seperti LinkedList), perilaku istilah kuadratik dapat dihasilkan. Jika suatu algoritma diterapkan pada daftar akses yang berkelanjutan, didorong untuk menggunakan algoritma daftar umum untuk memeriksa apakah daftar yang diberikan merupakan contoh antarmuka ini sebelum menerapkan algoritma yang dapat memberikan kinerja yang buruk, dan untuk mengubah perilakunya jika diperlukan kinerja yang dapat diterima.
Sekarang telah diakui bahwa perbedaan antara akses acak dan kontinu seringkali tidak jelas. Misalnya, jika daftarnya besar, beberapa implementasi daftar menyediakan waktu akses linier tambahan, tetapi sebenarnya adalah waktu akses tetap. Implementasi daftar seperti itu biasanya harus mengimplementasikan antarmuka ini.
Tekankan: Apa yang direkomendasikan dalam JDK adalah mengimplementasikan antarmuka acak ACCHACKESS untuk koleksi daftar sebanyak mungkin
Jika kelas pengumpulan adalah implementasi acak, cobalah untuk melintasi untuk (int i = 0; i <ukuran; i ++) alih -alih iterator iterator.
Sebaliknya, jika daftarnya adalah daftar urutan, yang terbaik adalah mengulangi dengan iterator.
Jelas dalam JDK bahwa dalam algoritma daftar traversal, terutama ukuran yang sangat besar, kita harus mencoba untuk menentukan apakah itu milik ACCOWAccess (seperti ArrayList) atau daftar urutan (seperti LinkedList). Karena algoritma traversal yang cocok untuk daftar acak ACCHACT sangat berbeda bila digunakan pada daftar urutan. Metode yang umum digunakan adalah:
Untuk membuat penilaian:
if (daftar instance acakAccess) {for (int m = 0; m <list.size (); m ++) {}} else {iterator iter = list.iterator (); while (iter.hasnext ()) {}}tes:
TestRandomAccess kelas publik {@test public void testTraverse () {arrayList <Integer> arrayList = ArrayList baru <Integer> (); LinkedList <Integer> LinkedList = new LinkedList <Integer> (); initlist (ArrayList, 1000); initlist (LinkedList, 1000); System.out.println ("ArrayList mengimplementasikan antarmuka acak ACCHACKESS"); ImprandomAccessTraverse (ArrayList); // Butuh 10ms ke System.out.println ("LinkedList tidak menerapkan antarmuka acak ACCHACCESS"); ImprandomAccessTraverse (LinkedList); // Butuh 434ms ke System.out.println ("/NarrayList tidak menerapkan antarmuka acak ACCHACCESS"); NoImplrandomAccessTraverse (ArrayList); // Butuh 39ms ke System.out.println ("LinkedList tidak mengimplementasikan antarmuka acak ACCHACCESS"); NoImplrandomAccessTraverse (LinkedList); // butuh 27ms untuk} private long starttime = 0; Private Long Endtime = 0; // inisialisasi daftar public void initlist (daftar <integer> daftar, int n) {for (int i = 0; i <n; i ++) {list.add (i); }} // Ada traversal dari semua data yang mengimplementasikan antarmuka acak ACCHACKESS, public void ImprandomAccessTraverse (daftar daftar) {startTime = system.currentTimeMillis (); untuk (int count = 0; count <= 1000; count ++) {for (int i = 0; i <list.size (); i ++) {list.get (i); }} endtime = system.currentTimeMillis (); System.out.println ("Butuh total iterasi menggunakan loop" + (endtime - startTime) + "MS Time"); } // Traversal dari semua data tanpa mengimplementasikan antarmuka acak ACCHACKESS public void noImplrandomAccessTraverse (daftar daftar) {startTime = system.currentTimeMillis (); untuk (int count = 0; count <= 1000; count ++) {for (iterator itr = list.iterator (); itr.hasnext ();) {itr.next (); }} endtime = system.currentTimeMillis (); System.out.println ("Dibutuhkan total iterasi menggunakan iterator" + (endtime - startTime) + "MS Time"); }}Pemahaman komprehensif di atas tentang antarmuka Java Acak ACCOWAccess adalah semua konten yang saya bagikan dengan Anda. Saya harap Anda dapat memberi Anda referensi dan saya harap Anda dapat mendukung wulin.com lebih lanjut.