Heim  >  Artikel  >  Java  >  Java-Programm zum Durchsuchen benutzerdefinierter Objekte aus einer Liste mithilfe eines binären Suchkomparators

Java-Programm zum Durchsuchen benutzerdefinierter Objekte aus einer Liste mithilfe eines binären Suchkomparators

WBOY
WBOYnach vorne
2023-08-28 16:05:091412Durchsuche

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.

Binäre Suchparameter und ihre Komponenten

  • 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

Algorithmus

  • 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

Binäre Suche mit Komparator – Syntax

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.

So folgen Sie

  • Methode 1 zum Suchen nach benutzerdefinierten Objekten aus einer Liste mithilfe eines binären Suchers und Komparators

Suchen Sie mit Komparatoren nach benutzerdefinierten Objekten aus Listen

In diesen Beispielen verwenden wir Sammlungen, binäreSuche() und Komparatorklassenoperationen, um einige benutzerdefinierte Daten mithilfe binärer Suchoperationen über den Komparator zu sortieren

Beispiel 1: Verwenden Sie Collections, BinarySearch(), um Daten aus einer Liste zu finden

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); }
}

Ausgabe

Found at index number zone-1
-1

Beispiel 2: Liste aufsteigend sortieren

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>

Ausgabe

Note: ascendingsearch.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
-6
-6

Beispiel 3: Sortieren Sie die Liste in absteigender Reihenfolge und finden Sie die Indexnummer

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);
	}
}

Ausgabe

Found at index number present -4

Beispiel 4: Ermitteln Sie die Anzahl der Elemente und Werte

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");
   }
}

Ausgabe

Enter number of elements:
7
Enter 7 integers
10
12
56
42
48
99
100
Enter the search value:
50
50 is not found.

Fazit

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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:tutorialspoint.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen