IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Java Discussion :

Recherche basée sur plusieurs critères


Sujet :

Java

  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2009
    Messages
    153
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2009
    Messages : 153
    Points : 105
    Points
    105
    Par défaut Recherche basée sur plusieurs critères
    Bonjour,
    Je voudrais effectuer une recherche dans un tableau (basique allez-vous certainement le dire) mais je veux un algorithme pour effectuer une recherche style SQL. par exemple: il est donnée un tableau d'objet dont les attribut sont
    String champ1;
    String champ2;
    le but et de rechercher l'objet dont l'attribut champ1=texte ou champ2 =texte
    les méthodes optimales de recherche que je connais ne peuvent s'appliquer à ce cas. car exigent que le tableau soit au préalable trié. cependant nous ne pouvons trier le tableau sur les deux critère à la fois.
    la seule idée que j'ai et dont la complexité ne me satisfait guère, est de procéder en deux temps. C'est-à-dire faire un premier trie sur champ1 et appliquer la recherche dichotomique par exemple. si on ne trouve aucun élément, on trie à nouveau sur champ2 et on recherche.
    Si de grâce quelqu'un à une meilleur idée s'il vous plait

    toutes mes excuse si mon post ne se trouve pas sur le bon forums.

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 566
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 566
    Points : 21 635
    Points
    21 635
    Par défaut
    ..........

    La méthode basique, c'est de regarder tous les éléments et garder ceux dont les deux critères correspondent.

    Les systèmes utilisés en base de données, consistent à garder les données triées/indexées, pour toutes les combinaisons importantes, à tout moment. Faire une base de données n'est pas franchement trivial, donc reproduire leurs fonctionnalités non plus. Logique.

  3. #3
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2009
    Messages
    153
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2009
    Messages : 153
    Points : 105
    Points
    105
    Par défaut
    Merci pour ta réponse ! je ne veux pas utiliser cette méthode tant que je pense qu'il y a mieux. aussi je continue de creuser en continuant d'attendre d'autres suggestions.

  4. #4
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 566
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 566
    Points : 21 635
    Points
    21 635
    Par défaut
    Bah l'autre méthode, j'en ai parlé : maintenir un index des données, basé sur le double critère voulu.
    En Java un tel index peut se faire en utilisant l'ArrayListMultimap<Integer, TaClasse> de la bibliothèque Guava.
    Les valeurs contenues seraient les données dans lesquelles chercher, les clés seraient le hachage du double critère voulu pour la valeur concernée. Il faut une Multimap car il y a sûrement plus d'une donnée correspondante.


    Si ce double critère change tout le temps, il faut maintenir un index basé sur chaque combinaison possible, ou bien renoncer à faire mieux que la méthode basique. C'est ce que font les bases de données et c'est la réalité ni plus ni moins.

  5. #5
    Membre habitué
    Profil pro
    Opération
    Inscrit en
    Décembre 2012
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Opération

    Informations forums :
    Inscription : Décembre 2012
    Messages : 91
    Points : 188
    Points
    188
    Par défaut
    Je ne sais pas ce tu appelles une "recherche style SQL", mais je vois que 2 possibilités pour ton problème:
    Soit tu fait ta recherche en parcourant l'ensemble des lignes de ton tableau.
    Soit tu crée et maintien un index sur ton tableau.

    Côté performance, il faut comparer le coût du maintien de l'index avec le gain obtenu pour la recherche.
    Si tes données sont modifiées rarement mais recherchées souvent cela est généralement positif.

    Si le critère est "champ1=texte ou champ2=texte", un seul index pourrait comporter 2 lignes d'index pour chaque ligne de ton tableau. Cela permet de faire une seule recherche au lieu de 2 si l'on crée 1 index par champ.

  6. #6
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2009
    Messages
    153
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2009
    Messages : 153
    Points : 105
    Points
    105
    Par défaut
    Je trouve l'idée de l'index très intéressante merci à vous

Discussions similaires

  1. [XL-2007] Formulaire VBA Excel - recherche sur plusieurs critères et affichage des résultats
    Par kl1ft dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 29/08/2016, 20h44
  2. [AC-2013] Programme de recherche sur plusieurs critères
    Par romain19 dans le forum Access
    Réponses: 1
    Dernier message: 22/04/2015, 04h54
  3. Recherche sur plusieurs critères
    Par Hadi2015 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 19/02/2015, 19h41
  4. Recherche de plusieurs résultats sur plusieurs critères
    Par Chen norris dans le forum Langage SQL
    Réponses: 2
    Dernier message: 01/08/2011, 17h18
  5. Recherche se basant sur plusieurs critéres!
    Par rach20032 dans le forum Langage SQL
    Réponses: 1
    Dernier message: 21/09/2007, 00h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo