Maison  >  Article  >  Java  >  Programme Java pour rechercher un objet défini par l'utilisateur dans une liste à l'aide d'un comparateur de recherche binaire

Programme Java pour rechercher un objet défini par l'utilisateur dans une liste à l'aide d'un comparateur de recherche binaire

WBOY
WBOYavant
2023-08-28 16:05:091399parcourir

Programme Java pour rechercher un objet défini par lutilisateur dans une liste à laide dun comparateur de recherche binaire

Interface de comparaison Java pour trier les objets Java. Les classes de comparaison en Java comparent différents objets (Obj 01, Obj 02) en appelant "java.util.comparator". Dans cette méthode, les objets peuvent être comparés en fonction de la valeur de retour. La comparaison peut être positive, égale ou négative.

Le processus offre aux utilisateurs plusieurs séquences de tri. Il existe de nombreuses façons de comparer les deux méthodes.

  • public int compare class (obj 1, obj 2) - Effectue une comparaison entre deux objets.

  • public Boolean equals (obj) - Compare l'objet actuel avec l'objet spécifié.

Java Collection Class - Fournit des méthodes statiques pour trier les éléments d'une collection de données. Cet élément de collection est utilisé dans TreeMap.

Discutons de la façon de créer un code Java à l'aide de comparateurs pour rechercher un objet défini par l'utilisateur dans une liste via une recherche binaire.

Paramètres de recherche binaire et leurs composants

  • Paramètres

    • est un tableau spécifique

    • fromindex - le premier élément à rechercher

    • toindex - le dernier élément à rechercher key - la valeur à rechercher Paires clé-valeur à rechercher

    • Comparateur

  • Retour

    • Renvoie l'index de la clé de recherche qui existe dans la plage spécifiée.

  • Exceptions

    • ClassCast

    • Paramètres illégaux

    • ArrayIndexOutOfBounds

Algorithme

  • Première étape : commencez.

  • Étape 2 - Calcul de l'ensemble d'éléments intermédiaires.

  • Étape 3 - Comparez le mot-clé à l'élément du milieu.

  • Étape 4 - Si les valeurs des éléments clés et intermédiaires sont les mêmes ; renvoyez le résultat.

  • Étape 5 - Sinon, la valeur de la clé est supérieure à l'élément du milieu, suivez alors la moitié droite de l'ensemble

  • Étape 6 - Ou ; si la valeur de la clé est inférieure à l'élément médian, suivez le supérieur

Recherche binaire à l'aide d'un comparateur - syntaxe

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)

Il existe deux syntaxes bien connues pour rechercher des objets définis par l'utilisateur dans des listes via une recherche binaire à l'aide de comparateurs. Dans le premier cas, la liste doit être triée par ordre croissant et la procédure est appelée à l'aide d'une méthode spécifique, où le résultat est indéfini.

En revanche, pour rechercher un objet spécifié, il est important d'appeler la méthode.

Comment suivre

  • Méthode 1 pour rechercher des objets définis par l'utilisateur dans une liste à l'aide d'un chercheur et d'un comparateur binaires

Recherchez des objets définis par l'utilisateur dans des listes à l'aide de comparateurs

Dans ces exemples, nous utilisons des collections, des opérations de classe binaireSearch() et de comparaison pour trier certaines données définies par l'utilisateur à l'aide d'opérations de recherche binaire via un comparateur

Exemple 1 : utilisez Collections, BinarySearch() pour rechercher des données dans une liste

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

Sortie

Found at index number zone-1
-1

Exemple 2 : Trier la liste par ordre croissant

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>

Sortie

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

Exemple 3 : Triez la liste par ordre décroissant et trouvez le numéro d'index

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

Sortie

Found at index number present -4

Exemple 4 : Trouver le nombre d'éléments et de valeurs

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

Sortie

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

Conclusion

Dans cet article, nous avons découvert l'interface comparable en Java avec quelques exemples de code et d'algorithmes. Ici, nous déclarons certaines classes et interfaces de comparaison définies par l'utilisateur. Ils répondent à des objectifs spécifiques et permettent de traiter des données spécifiques dans un environnement Java.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer