50 votes

Filtre ArrayList

Comment pouvez-vous filtrer quelque chose d'une Java ArrayList comme si vous avez :

  1. Comment vas-tu
  2. Comment ça va
  3. Joe
  4. Mike

Et le filtre est "Comment" il supprimera Joe et Mike.

55voto

Tomas Points 4691

La meilleure façon est probablement d'utiliser la goyave

 List<String> list = new ArrayList<String>();
list.add("How are you");
list.add("How you doing");
list.add("Joe");
list.add("Mike");
    
Collection<String> filtered = Collections2.filter(list,
    Predicates.containsPattern("How"));
print(filtered);

impressions

 How are you
How you doing

Si vous souhaitez obtenir la collection filtrée sous forme de liste, vous pouvez l'utiliser (également à partir de Guava):

 List<String> filteredList = Lists.newArrayList(Collections2.filter(
    list, Predicates.containsPattern("How")));

29voto

anubhava Points 172509

Parcourez la liste et vérifiez si contient votre chaîne "Comment" et si elle le fait, supprimez-la. Vous pouvez utiliser le code suivant :

 // need to construct a new ArrayList otherwise remove operation will not be supported
List<String> list = new ArrayList<String>(Arrays.asList(new String[] 
                                  {"How are you?", "How you doing?","Joe", "Mike"}));
System.out.println("List Before: " + list);
for (Iterator<String> it=list.iterator(); it.hasNext();) {
    if (!it.next().contains("How"))
        it.remove(); // NOTE: Iterator's remove method, not ArrayList's, is used.
}
System.out.println("List After: " + list);

SORTIR:

 List Before: [How are you?, How you doing?, Joe, Mike]
List After: [How are you?, How you doing?]

11voto

MG. Points 377

écrivez vous-même une fonction de filtre

  public List<T> filter(Predicate<T> criteria, List<T> list) {
        return list.stream().filter(criteria).collect(Collectors.<T>toList());
 }

Et puis utiliser

     list = new Test().filter(x -> x > 2, list);

C'est la version la plus soignée de Java, mais nécessite JDK 1.8 pour prendre en charge le calcul lambda

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X