Rumah >Java >javaTutorial >Program Java untuk mencari objek yang ditentukan pengguna dari senarai dengan menggunakan pembanding carian binari
Antara muka pembanding Java untuk mengisih objek Java. Kelas pembanding dalam Java membandingkan objek yang berbeza (Obj 01, Obj 02) dengan memanggil "java.util.comparator". Dalam kaedah ini, objek boleh dibandingkan berdasarkan nilai pulangan. Perbandingan boleh menjadi positif, sama, atau negatif.
Proses ini menyediakan pengguna dengan pelbagai urutan pengisihan. Terdapat banyak cara untuk membandingkan kedua-dua kaedah.
kelas perbandingan int awam (obj 1, obj 2) - Melakukan perbandingan antara dua objek.
public Boolean equals (obj) - Membandingkan objek semasa dengan objek yang ditentukan.
Java Collection Class - Menyediakan kaedah statik untuk menyusun elemen dalam pengumpulan data. Elemen koleksi ini digunakan dalam TreeMap.
Mari kita bincangkan cara membina kod Java menggunakan pembanding untuk mencari objek yang ditentukan pengguna daripada senarai melalui carian binari.
Parameter
ialah tatasusunan khusus
fromindex - elemen pertama untuk dicari
toindex - elemen terakhir untuk dicari kunci - nilai untuk dicari Pasangan nilai kunci untuk dicari
Pembanding
Kembali
Mengembalikan indeks kekunci carian yang wujud dalam julat yang ditentukan.
Pengecualian
ClassCast
Parameter yang tidak sah
ArrayIndexOutOfBounds
Langkah pertama - mulakan.
Langkah 2 - Pengiraan set elemen pertengahan.
Langkah 3 - Bandingkan kata kunci dengan elemen tengah.
Langkah 4 - Jika nilai elemen utama dan pertengahan adalah sama;
Langkah 5 - Jika tidak, nilai kunci lebih besar daripada elemen tengah, kemudian ikut separuh kanan set
Langkah 6 - Atau; jika nilai kunci kurang daripada elemen pertengahan maka ikut bahagian atas
public static int binarySearch(primitive() p,Primitive key) public static int binarySearch(Object() o,Object key) public static int binarySearch(Object() o,Object key,Comparator c) Java Collections binarySearch(List<? extends Comparable1<? super R>> list, R key)and; Java Collections binarySearch(List<? extends R> list, R key, Comparator<? super R> c)
Terdapat dua sintaks yang terkenal untuk mencari objek yang ditentukan pengguna daripada senarai melalui carian binari menggunakan pembanding. Untuk kes pertama, senarai perlu diisih dalam tertib menaik dan prosedur dipanggil menggunakan kaedah tertentu, di mana hasilnya tidak ditentukan.
Sebaliknya, untuk mencari objek tertentu, adalah penting untuk memanggil kaedah.
Kaedah 1 untuk mencari objek yang ditentukan pengguna daripada senarai dengan menggunakan pencari binari dan pembanding
Dalam contoh ini, kami menggunakan koleksi, binarySearch() dan operasi kelas pembanding untuk mengisih beberapa data yang ditentukan pengguna menggunakan operasi carian binari melalui pembanding
import java.util.*; public class Binarysearch { public static void main(String[] args){ List<Domain> l1 = new ArrayList<Domain>(); l1.add(new Domain(100, "India")); l1.add(new Domain(200, "Bangladesh")); l1.add(new Domain(300, "Dhaka")); l1.add(new Domain(400, "Kolkata")); Comparator<Domain> c = new Comparator<Domain>() { public int compare(Domain u1, Domain u2) { return u1.getId().compareTo(u2.getId()); } }; int index = Collections.binarySearch( l1, new Domain(10, null), c); System.out.println("Found at index number zone" + index); index = Collections.binarySearch(l1, new Domain(6, null), c); System.out.println(index); } } class Domain { private int id; private String url; public Domain(int id, String url){ this.id = id; this.url = url; } public Integer getId() { return Integer.valueOf(id); } }
Found at index number zone-1 -1
import java.util.ArrayList; import java.util.Collections; import java.util.List; public class ascendingsearch { public static void main(String[] args){ List<Integer> ak = new ArrayList<integer>(); ak.add(100); ak.add(200); ak.add(30); ak.add(10); ak.add(20); int index = Collections.binarySearch(ak, 100); System.out.println(index); index = Collections.binarySearch(ak, 130); System.out.println(index); } } </integer>
Note: ascendingsearch.java uses unchecked or unsafe operations. Note: Recompile with -Xlint:unchecked for details. -6 -6
import java.util.ArrayList; import java.util.Collections; import java.util.List; public class binsearchdecend { public static void main(String[] args){ List<Integer> a0710 = new ArrayList<Integer>(); a0710.add(1000); a0710.add(500); a0710.add(300); a0710.add(10); a0710.add(2); int index = Collections.binarySearch( a0710, 50, Collections.reverseOrder()); System.out.println("Found at index number present " + index); } }
Found at index number present -4
import java.util.Scanner; public class BinarySearchExample{ public static void main(String args[]){ int counter, num, item, array[], first, last, middle; Scanner input = new Scanner(System.in); System.out.println("Enter number of elements:"); num = input.nextInt(); array = new int[num]; System.out.println("Enter " + num + " integers"); for (counter = 0; counter < num; counter++) array[counter] = input.nextInt(); System.out.println("Enter the search value:"); item = input.nextInt(); first = 0; last = num - 1; middle = (first + last)/2; while( first <= last ){ if ( array[middle] < item ) first = middle + 1; else if ( array[middle] == item ){ System.out.println(item + " found at location " + (middle + 1) + "."); break; } else{ last = middle - 1; } middle = (first + last)/2; } if ( first > last ) System.out.println(item + " is not found.\n"); } }
Enter number of elements: 7 Enter 7 integers 10 12 56 42 48 99 100 Enter the search value: 50 50 is not found.
Dalam artikel ini, kami mempelajari tentang antara muka Setanding dalam Java dengan beberapa kod sampel dan algoritma. Di sini kami mengisytiharkan beberapa kelas yang ditentukan pengguna dan antara muka pembanding. Mereka menyediakan beberapa tujuan khusus dan membenarkan data khusus diproses dalam persekitaran Java.
Atas ialah kandungan terperinci Program Java untuk mencari objek yang ditentukan pengguna dari senarai dengan menggunakan pembanding carian binari. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!