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

Fermé
marie12_2000 Messages postés 27 Date d'inscription vendredi 22 mars 2019 Statut Membre Dernière intervention 29 février 2020 - 3 déc. 2019 à 19:24
KX Messages postés 16752 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 août 2024 - 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

1 réponse

KX Messages postés 16752 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 août 2024 3 019
Modifié le 3 déc. 2019 à 21:08
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
    }
}
0
marie12_2000 Messages postés 27 Date d'inscription vendredi 22 mars 2019 Statut Membre Dernière intervention 29 février 2020
3 déc. 2019 à 21:12
Bonsoir , merci pour votre réponse je n’ai pas que des string a manipuler j’ai aussi des int des long ... par exemple chaque objet a pour attribut prix je dois comparer le prix de chaque objet s’il appartient a l’intervalle donné l’objet sera affiché
0
KX Messages postés 16752 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 août 2024 3 019 > marie12_2000 Messages postés 27 Date d'inscription vendredi 22 mars 2019 Statut Membre Dernière intervention 29 février 2020
3 déc. 2019 à 21:30
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;
    }
}
0
marie12_2000 Messages postés 27 Date d'inscription vendredi 22 mars 2019 Statut Membre Dernière intervention 29 février 2020
3 déc. 2019 à 22:03
Je vois merci ,
Mais comment est ce que je peux modifier les critères de sélection ( en tajouter , en supprimer ...)
0
KX Messages postés 16752 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 août 2024 3 019 > marie12_2000 Messages postés 27 Date d'inscription vendredi 22 mars 2019 Statut Membre Dernière intervention 29 février 2020
3 déc. 2019 à 22:13
Ç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...
0
marie12_2000 Messages postés 27 Date d'inscription vendredi 22 mars 2019 Statut Membre Dernière intervention 29 février 2020
4 déc. 2019 à 00:28
Non ce n’est pas que des strings et je veux les ajouter de la manière la plus simple qu’il soit
0