Maison >Java >javaDidacticiel >Programme Java pour rechercher un objet défini par l'utilisateur dans une liste à l'aide d'un 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
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
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
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.
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
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
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.
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!