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

Collection et Stream Java Discussion :

Recherche dans un tableau


Sujet :

Collection et Stream Java

  1. #1
    Membre expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Points : 3 080
    Points
    3 080
    Par défaut Recherche dans un tableau
    J'étais pourtant persuadé l'avoir déjà fait grâce à une méthode d'une classe telle que Arrays, mais là je ne la retrouve plus...

    Certes, je peux faire une boucle pour parcourir le tableau (ça prendrait 3-4 lignes), mais je pense que c'est dans la JDK, un truc du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    LaClasseEnQuestion.contains(Object[] tab, Object o)
    indiquant si le tableau contient l'objet o...

  2. #2
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut !

    Citation Envoyé par ®om
    J'étais pourtant persuadé l'avoir déjà fait grâce à une méthode d'une classe telle que Arrays, mais là je ne la retrouve plus...
    Il faut ouvrir les yeux

    Arrays.binarySearch(Object[], Object) (la même existe avec un Comparator si les Object ne sont pas Comparable).

    a++

  3. #3
    Membre expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Points : 3 080
    Points
    3 080
    Par défaut
    Citation Envoyé par adiGuba
    Salut !

    Il faut ouvrir les yeux

    Arrays.binarySearch(Object[], Object) (la même existe avec un Comparator si les Object ne sont pas Comparable).

    a++
    Sauf que c'est une recherche dichotomique, et si aucun comparateur ne peut être défini pour les objets, on ne peut pas l'utiliser

  4. #4
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par ®om
    Sauf que c'est une recherche dichotomique, et si aucun comparateur ne peut être défini pour les objets, on ne peut pas l'utiliser
    Oups
    En effet j'ai répondu un peu trop vite...

    C'est vrai que l'API standard est assez limité dans la gestion des tableaux et collections...

    A la rigueur tu pourrais utiliser les Jakarta Commons Lang et la méthode ArrayUtils.contains(Object[], Object)...

    a++

  5. #5
    Membre expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Points : 3 080
    Points
    3 080
    Par défaut
    OK, merci, ils devraient l'inclure dans l'API de java 6 ça, ça serait pratique

    Pour mon besoin, je ne vais pas prendre une API pour faire 2 recherches dans un tableau, je vais le faire à la main...

    J'étais persuadé que ça existait dans Arrays...

  6. #6
    Membre actif
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Mars 2002
    Messages
    192
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Mars 2002
    Messages : 192
    Points : 252
    Points
    252
    Par défaut
    Citation Envoyé par ®om
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    LaClasseEnQuestion.contains(Object[] tab, Object o)
    indiquant si le tableau contient l'objet o...
    et quelque chose dans le genre ne ferait pas ton affaire ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Arrays.asList(tab).contains(o);
    Matthieu
    Quelques tips Java & autres : mon blog

  7. #7
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par McFoggy
    et quelque chose dans le genre ne ferait pas ton affaire ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Arrays.asList(tab).contains(o);
    Matthieu
    C'est un peu dommage de devoir dupliqué tout le tableau dans une List seulement pour pouvoir vérifier la présence d'un élément...

    Surtout que le code de la méthode contains() n'est pas bien méchant...

    a++

  8. #8
    Membre actif
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Mars 2002
    Messages
    192
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Mars 2002
    Messages : 192
    Points : 252
    Points
    252
    Par défaut
    Citation Envoyé par adiGuba
    C'est un peu dommage de devoir dupliquer tout le tableau dans une List seulement pour pouvoir vérifier la présence d'un élément...
    Tu ne dupliques absolument rien en faisant celà (regarde l'implémentation de Arrays.asList()). Je trouve celà plus clair en tout les cas à écrire que d'écrire les 3-4 lignes qu'il va te falloir pour écrire ton parcours de tableau.

    Mais ce n'est que mon avis.

    Matthieu
    Quelques tips Java & autres : mon blog

  9. #9
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par McFoggy
    Tu ne dupliques absolument rien en faisant celà (regarde l'implémentation de Arrays.asList()). Je trouve celà plus clair en tout les cas à écrire que d'écrire les 3-4 lignes qu'il va te falloir pour écrire ton parcours de tableau.
    En effet tu as raison !

    L'implémentation de List retoruné partage ses données avec le tableau sans les dupliquer !
    C'est bon à savoir ca

    a++

  10. #10
    Membre expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Points : 3 080
    Points
    3 080
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        public static <T> List<T> asList(T... a) {
    	return new ArrayList<T>(a);
        }
    Pourtant, ArrayList n'a pas de constructeur (T [] a) ???

  11. #11
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par ®om
    Pourtant, ArrayList n'a pas de constructeur (T [] a) ???
    Il ne s'agit pas de la classe public java.util.ArrayList mais d'une classe private java.util.Arrays.ArrayList

    Moi aussi je me suis fait avoir

    a++

Discussions similaires

  1. [Tableaux] recherche dans un TABLEAU
    Par dunbar dans le forum Langage
    Réponses: 3
    Dernier message: 15/08/2006, 00h06
  2. [VBA-E]Recherche dans un tableau
    Par Zebulon777 dans le forum Macros et VBA Excel
    Réponses: 49
    Dernier message: 05/07/2006, 10h35
  3. Recherche dans un tableau
    Par Bes74 dans le forum Access
    Réponses: 5
    Dernier message: 04/07/2006, 17h26
  4. [VBA-E] recherche dans un tableau
    Par tibss dans le forum Macros et VBA Excel
    Réponses: 33
    Dernier message: 03/05/2006, 17h52
  5. URGENt: recherche dans un tableau trié par ordre alphabetiqu
    Par JulPop dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 12/02/2005, 17h21

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