Bonjour à tous et à toutes,
Je réalise en ce moment une application dans laquelle grâce à un champ Text et un Button, j'arrive à filtrer les objets contennant en partie le mot tapé dans la zone texte.
Le problème est que je me retrouve au départ avec plus de 6000 objets (de type Personne possèdant un attribut id et un attribut nom). Imaginez donc le temps qu'il faut pour rechercher un mot précis dans tout cela ! Résultat : cela prend entre 2 et 3s.
Ma question au final est donc : Comment feriez-vous pour optimiser cette recherche ?
Voici la classe qui se charge de filtrer le TableViewer
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 class PersonneNomFilter extends ViewerFilter { private String nomPersonne; public PersonneNomFilter(String nomPersonne) { this.nomPersonne = nomPersonne; } public void setText(String nomPersonne) { this.nomPersonne = nomPersonne; } public boolean select(Viewer viewer, Object parent, Object element) { if(nomPersonne.length() == 0) return true; else { Personne p = (Personne) element; String str = p.getNom().toUpperCase(); if(str.indexOf(nomPersonne.toUpperCase()) >= 0) return true; return false; } } }
Partager