Heim >Java >javaLernprogramm >Java-Programm zum Durchsuchen benutzerdefinierter Objekte aus einer Liste mithilfe eines binären Suchkomparators
Java-Komparatorschnittstelle zum Sortieren von Java-Objekten. Komparatorklassen in Java vergleichen verschiedene Objekte (Obj 01, Obj 02), indem sie „java.util.comparator“ aufrufen. Bei dieser Methode können Objekte anhand des Rückgabewerts verglichen werden. Der Vergleich kann positiv, gleich oder negativ sein.
Der Prozess bietet Benutzern mehrere Sortiersequenzen. Es gibt viele Möglichkeiten, die beiden Methoden zu vergleichen.
public int Compare Class (obj 1, obj 2) – Führt einen Vergleich zwischen zwei Objekten durch.
public Boolean equals (obj) – Vergleicht das aktuelle Objekt mit dem angegebenen Objekt.
Java-Sammlungsklasse – Bietet statische Methoden zum Sortieren von Elementen in einer Datensammlung. Dieses Sammlungselement wird in TreeMap verwendet.
Lassen Sie uns besprechen, wie Sie mithilfe von Komparatoren einen Java-Code erstellen, um über die binäre Suche nach einem benutzerdefinierten Objekt aus einer Liste zu suchen.
Parameter
ist ein bestimmtes Array
fromindex – das erste Element, nach dem gesucht wird
toindex – das letzte Element, nach dem gesucht werden soll Schlüssel – der Wert, nach dem gesucht werden soll Zu durchsuchende Schlüssel-Wert-Paare
Komparator
Rückkehr
Gibt den Index des Suchschlüssels zurück, der im angegebenen Bereich vorhanden ist.
Ausnahmen
ClassCast
Ungültige Parameter
ArrayIndexOutOfBounds
Schritt eins – loslegen.
Schritt 2 – Berechnung des Zwischenelementsatzes.
Schritt 3 – Vergleichen Sie das Schlüsselwort mit dem mittleren Element.
Schritt 4 – Wenn die Werte der Schlüssel- und Mittelelemente gleich sind, geben Sie das Ergebnis zurück.
Schritt 5 – Andernfalls ist der Wert des Schlüssels größer als das mittlere Element, dann folgen Sie der rechten Hälfte des Satzes
Schritt 6 – Oder wenn der Wert des Schlüssels kleiner als das mittlere Element ist, folgen Sie dem oberen
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)
Es gibt zwei bekannte Syntaxen, um über die binäre Suche mithilfe von Komparatoren nach benutzerdefinierten Objekten aus Listen zu suchen. Im ersten Fall muss die Liste aufsteigend sortiert werden und die Prozedur mit einer bestimmten Methode aufgerufen werden, wobei das Ergebnis undefiniert ist.
Andererseits ist es für die Suche nach einem bestimmten Objekt wichtig, die Methode aufzurufen.
Methode 1 zum Suchen nach benutzerdefinierten Objekten aus einer Liste mithilfe eines binären Suchers und Komparators
In diesen Beispielen verwenden wir Sammlungen, binäreSuche() und Komparatorklassenoperationen, um einige benutzerdefinierte Daten mithilfe binärer Suchoperationen über den Komparator zu sortieren
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.
In diesem Artikel haben wir anhand einiger Beispielcodes und Algorithmen etwas über die Comparable-Schnittstelle in Java erfahren. Hier deklarieren wir einige benutzerdefinierte Klassen und Komparatorschnittstellen. Sie dienen bestimmten Zwecken und ermöglichen die Verarbeitung bestimmter Daten in einer Java-Umgebung.
Das obige ist der detaillierte Inhalt vonJava-Programm zum Durchsuchen benutzerdefinierter Objekte aus einer Liste mithilfe eines binären Suchkomparators. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!