Filtrer le contenu d’un tableau selon des critères

Messages postés
23
Date d'inscription
vendredi 22 mars 2019
Statut
Membre
Dernière intervention
4 décembre 2019
- - Dernière réponse : KX
Messages postés
16091
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
9 décembre 2019
- 4 déc. 2019 à 07:45
Bonjour a tous , je débute en java,mon problème est le suivant : j’ai un tableau qui contient des objets je veux filtrer certains objets en effectuant une recherche ciblée selon un ou plusieurs caractères , il faut savoir aussi que le système doit être conçu de manière à pouvoir a n’importe quel moment rajouter un critère de sélection.
Quels sont les classes méthodes ... que je pourrais utiliser car je n’ai aucune idée de comment commencer
Merci beaucoup
Afficher la suite 

1 réponse

Messages postés
16091
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
9 décembre 2019
2471
0
Merci
Bonjour,

Je dirais que ça dépend beaucoup du type d'objet que tu manipules.
Tu peux regarder du côté des Expression Language :
public class Toto {
    public String getStr() {
        return "toto";
    }

    public String[] getTab() {
        return new String[] { "tata", "toto", "titi" };
    }
}
import javax.el.ELProcessor;

public class Test {
    public static Object eval(String name, Object bean, String expression) {
        ELProcessor proc = new ELProcessor();
        proc.defineBean(name, bean);
        return proc.eval(expression);
    }

    public static void main(String[] args) {
        System.out.println(eval("x", new Toto(), "x.str == x.tab[0]")); // false
        System.out.println(eval("x", new Toto(), "x.str == x.tab[1]")); // true
        System.out.println(eval("x", new Toto(), "x.str == x.tab[2]")); // false
    }
}
KX
Messages postés
16091
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
9 décembre 2019
2471 > marie12_2000
Messages postés
23
Date d'inscription
vendredi 22 mars 2019
Statut
Membre
Dernière intervention
4 décembre 2019
-
Les Expression Language permettent de faire ça. Exemple :

public class Produit {
    private double prix;

    public Produit(double prix) {
        this.prix = prix;
    }

    public double getPrix() {
        return prix;
    }
}
Produit[] produits = { new Produit(1), new Produit(2), new Produit(3), new Produit(4), new Produit(5) };
for (Produit produit : produits) {
    if ((boolean) eval("p", produit, "p.prix >= 2 && p.prix < 3.5")) {
        System.out.println(produit.prix); // 2.0; 3.0;
    }
}
marie12_2000
Messages postés
23
Date d'inscription
vendredi 22 mars 2019
Statut
Membre
Dernière intervention
4 décembre 2019
-
Je vois merci ,
Mais comment est ce que je peux modifier les critères de sélection ( en tajouter , en supprimer ...)
KX
Messages postés
16091
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
9 décembre 2019
2471 > marie12_2000
Messages postés
23
Date d'inscription
vendredi 22 mars 2019
Statut
Membre
Dernière intervention
4 décembre 2019
-
Ça dépend, tu veux les "ajouter" comment ? Tu as une interface graphique ? Une base de données ?
Parce que dans la mesure où les critères de sélection ne sont plus que des String, tu peux faire plus ou moins ce que tu veux, même les saisir au clavier...
marie12_2000
Messages postés
23
Date d'inscription
vendredi 22 mars 2019
Statut
Membre
Dernière intervention
4 décembre 2019
-
Non ce n’est pas que des strings et je veux les ajouter de la manière la plus simple qu’il soit
KX
Messages postés
16091
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
9 décembre 2019
2471 > marie12_2000
Messages postés
23
Date d'inscription
vendredi 22 mars 2019
Statut
Membre
Dernière intervention
4 décembre 2019
-
Quand je dis que ce sont des String, je parle des critères de sélection comme "p.prix >= 2 && p.prix < 3.5"'
Peut importe la complexité des objets qu'il y a derrière, l'ajout d'un critère de sélection c'est l'ajout d'un String.
Commenter la réponse de KX