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

avec Java Discussion :

Recherche des éléments dans une liste


Sujet :

avec Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2015
    Messages : 136
    Par défaut Recherche des éléments dans une liste
    salut a tous

    voila je remplie un arraylist comme suit par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     t71 = new ArrayList<>();
     t71.add(new ItemSlideMenu1("a","1"));
     t71.add(new ItemSlideMenu1("a","2"));
     t71.add(new ItemSlideMenu1("b","1"));
     t71.add(new ItemSlideMenu1("a","3"));
     t71.add(new ItemSlideMenu1("b","2"));

    a noter que les elmment ne sont pas unique c'etait juste pour vous donnez un exemple , je remplie t71 a partir d'une base de donnée
    pour le ItemSlideMenu
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    public class ItemSlideMenu1 {
     
     
        private String title;
        private String title1 ;
        public ItemSlideMenu1(String title, String title1) {
            this.title = title;
            this.title1 = title1;
        }
     
     
     
        public String getTitle() {
            return title;
        }
        public String getTitle1() {
            return title1;
        }
     
     
        public void setTitle(String title,String title1) {
            this.title = title;
            this.title1 = title1;
        }
    }
    je veux que ma nouvelle liste contiens ("a","1")et ("b","1"), donc il fait la recherche en fonction du premier caractère de chaque item de la liste "t71" queleque soit l'ordre da la liste t71, dans ma nouvelle liste je veux avoir un seul a et un seul b (les premiers de la liste t71)

    merci

  2. #2
    Membre chevronné
    Avatar de Jacques Beauregard
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2015
    Messages
    231
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2015
    Messages : 231
    Par défaut
    Salut,

    En supposant que les éléments avec "1" soient uniques ( un seul couple "a","1" , "b","1" etc) :
    Tu peux parcourir ta liste et ajouter l'élément que tu souhaites dans une nouvelle liste :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    List<ItemSlideMenu1> t72 = new ArrayList<>();
     
    for(ItemSlideMenu1 item : t71) {
     
       if(item.getTitle1().equals("1")) {
          t72.add(item)
       }
     
    }
    Il ne faut jamais prendre les gens pour des cons, mais il ne faut pas oublier qu'ils le sont...

    Le guide du débutant pour apprendre à programmer en Java - N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2015
    Messages : 136
    Par défaut
    et si ils sont pas unique ? c'est ce que je cherche
    je remplie t71 a partir d'une base de donnée , ni le 1er (a ou b) ni le 2eme (1,2,3,4 ect ) ne sont unique je pourrais avoir (r,5) (r,2) (f,8)(f,1) comme résultat je veux avoir (r,5)et (f,8) (en fonction de l'ordre )

  4. #4
    Membre chevronné
    Avatar de Jacques Beauregard
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2015
    Messages
    231
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2015
    Messages : 231
    Par défaut
    Je te parle d'unicité sur les couples

    Tu me donnes un exemple avec 4 couples différents : (r,5) (r,2) (f,8)(f,1)
    Il ne faut jamais prendre les gens pour des cons, mais il ne faut pas oublier qu'ils le sont...

    Le guide du débutant pour apprendre à programmer en Java - N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2015
    Messages : 136
    Par défaut
    oui , mais le 1er String de chaque couple se répète , tout dépend de ma base c'est qui est sur c'est que pour le 1er string de chaque couple j'aurais maximum deux qui se répètent

  6. #6
    Modérateur
    Avatar de kolodz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    2 209
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 209
    Billets dans le blog
    52
    Par défaut
    Bonjour,

    J'avoue ne pas voir où se trouve la difficulté :
    Si c'est déjà présent dans ta nouvelle liste, tu l'ajoute pas !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    private void getFiltredListe(List<ItemSlideMenu1> listeToFilter) {
       ArrayList<ItemSlideMenu1> toReturn = new ArrayList<ItemSlideMenu1>();
        for(ItemSlideMenu1 item : listeToFilter) {
            if(!isTitleAlreadyInList(item,toReturn )){
                toReturn.add(item);
            }
        }
        return toReturn; 
    }
     
    private void isTitleAlreadyInList(itemToCheck, List<ItemSlideMenu1> listeToCheck) {
        if(itemToCheck == null){
            return false;
        }
        for(ItemSlideMenu1 item : listeToFilter) {
            if(item != null && itemToCheck.getTitle().equals(item .getTitle())){
                return true;
            }
        }
        return false;
    }
    Ça se code avec 2 fonctions de 5 lignes...

    Par contre, il est préférable de faire ce genre de filtre au niveau de la base de données. En particulier, si la liste est conséquente !
    Car, cela revient à sélectionner la première ligne sur un group by, ce qui n'est pas super compliquer à faire en SQL.

    Cordialement,
    Patrick Kolodziejczyk.
    Si une réponse vous a été utile pensez à
    Si vous avez eu la réponse à votre question, marquez votre discussion
    Pensez aux FAQs et aux tutoriels et cours.

  7. #7
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Salut,

    Une méthode simple en Java pour résoudre ce genre de problème est d'utiliser un set :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    t71 = ...
     
    Set<String> set = new HashSet<>();
     
    List<ItemSlideMenu1> nouvelleList = new ArrayList<>();
     
    for(ItemSlideMenu1 item : t71) {
     
       if( !set.contains(item.getTitle1()) { // si le title1 n'est pas encore dans le set
          nouvelleList.add(item); // on récupère l'item dans la nouvelleList
          set.add(item.getTitle1()); // on stocke le title1 dans le set
       }
     
    }
    Ou encore par stream :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    List<ItemSlideMenu1> nouvelleListe2= new ArrayList<>(list1.stream()
    				                          .collect(Collectors.toMap(ItemSlideMenu1::getTitle1, p -> p, (p, q) -> p))
    				                          .values());

    Mais, effectivement, il vaut mieux filtrer à la base en SQL...
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

Discussions similaires

  1. [MySQL] Afficher un tableau selon un ou des éléments dans une liste
    Par Canonen10lecon dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 22/04/2013, 13h39
  2. Problème de recherche des éléments dans une liste.
    Par amine1980 dans le forum Débuter avec Java
    Réponses: 7
    Dernier message: 09/04/2011, 23h34
  3. [MySQL] Comment afficher des éléments dans une liste déroulante tout en dissimulant un ?
    Par lou87 dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 23/04/2009, 16h45
  4. Réponses: 10
    Dernier message: 11/03/2009, 17h30
  5. prélevez des éléments dans une liste
    Par Ganondorf dans le forum Langage
    Réponses: 4
    Dernier message: 17/10/2007, 00h29

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