Filterliste in Java

Sheeraz Gul 12 Oktober 2023
  1. Filtern Sie eine Liste mit Java 7 und höher
  2. Filtern Sie eine Liste mit Java 8
  3. Filtern Sie eine Liste mit Google Guava
  4. Filtern Sie eine Liste mit Apache Commons
Filterliste in Java

Das Filtern einer Liste ist beim Arbeiten in Java häufig erforderlich. Mehrere Methoden zum Filtern einer Liste in Java verwenden den Java-Kern und verschiedene Bibliotheken.

Dieses Tutorial zeigt, wie Sie eine Liste in Java filtern.

Filtern Sie eine Liste mit Java 7 und höher

Wir können die Liste mit Java 7 und den Versionen davor durchlaufen, um eine Liste in Java zu filtern.

Verwenden Sie die for-Schleife

Eine Methode ist die Verwendung der for-Schleife und der bedingten Anweisung. Sehen wir uns das Beispiel an:

package delftstack;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class Example {
  public static void main(String[] args) {
    List<String> Demo_List = Arrays.asList("Jack", "Shawn", "Jhon", "Michelle", "Joey");

    // Using Java 7 and before:

    // empty list
    List<String> Filtered_List = new ArrayList<>();

    // iterate through the list
    for (String Demo_Entry : Demo_List) {
      // filter values that start with `B`
      if (Demo_Entry.startsWith("J")) {
        Filtered_List.add(Demo_Entry);
      }
    }

    System.out.println(Filtered_List);
  }
}

Der obige Code verwendet for und if, um die Namen aus der angegebenen Liste mit dem Buchstaben J zu filtern. Siehe Ausgabe:

[Jack, Jhon, Joey]

Verwenden Sie die remove()-Methode

Eine andere Methode besteht darin, die Methode remove() aus der Klasse Iterator zu verwenden, um die Liste zu filtern. Sehen wir uns das Beispiel an:

package delftstack;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;

public class Example {
  public static void main(String[] args) {
    List<String> Demo_List =
        new ArrayList<>(Arrays.asList("Jack", "Shawn", "Jhon", "Michelle", "Joey"));

    // Using Java 7 and before:

    // get an iterator to the list
    Iterator<String> Demo_Iterator = Demo_List.iterator();

    // iterate through the list
    while (Demo_Iterator.hasNext()) {
      String Demo = Demo_Iterator.next();

      // filter values that start with `B`
      if (!Demo.startsWith("J")) {
        Demo_Iterator.remove();
      }
    }

    System.out.println(Demo_List);
  }
}

Der Code verwendet Iterator mit der remove()-Methode und der while-Schleife, um die Namen mit dem Buchstaben J aus der gegebenen Liste zu filtern. Siehe Ausgabe:

[Jack, Jhon, Joey]

Filtern Sie eine Liste mit Java 8

Um eine Liste in Java 8 zu filtern, können wir den Ansatz verwenden, bei dem wir die Liste in einen Stream konvertieren und dann filtern. Dies ist die empfohlene Methode zum Filtern einer Liste in Java 8.

Siehe das Beispiel:

package delftstack;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

public class Example {
  public static void main(String[] args) {
    List<String> Demo_List =
        new ArrayList<>(Arrays.asList("Jack", "Shawn", "Jhon", "Michelle", "Joey"));

    // Using Java 8 and above:
    String Filtered_List = Demo_List.stream()
                               .filter(entry -> entry.startsWith("J"))
                               .collect(Collectors.joining(", ", "[", "]"));

    System.out.println(Filtered_List);
  }
}

Der obige Code verwendet stream(), um die Liste mit den Namen mit dem Buchstaben J zu filtern. Siehe Ausgabe:

[Jack, Jhon, Joey]

Wie wir sehen können, wandelt der obige Code die Liste in der Ausgabe in einen String um. Wir können die Ausgabe auch mit dem Stream in eine Liste umwandeln.

Siehe das Beispiel:

package delftstack;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

public class Example {
  public static void main(String[] args) {
    List<String> Demo_List =
        new ArrayList<>(Arrays.asList("Jack", "Shawn", "Jhon", "Michelle", "Joey"));

    // Using Java 8 and above:
    List<String> Filtered_List =
        Demo_List.stream().filter(entry -> entry.startsWith("J")).collect(Collectors.toList());

    System.out.println(Filtered_List);
  }
}

Der obige Code konvertiert die gefilterte Listenausgabe in eine Liste. Siehe Ausgabe:

[Jack, Jhon, Joey]

Filtern Sie eine Liste mit Google Guava

Die Bibliothek Guava enthält Iterable und FluentIterable, die zum Filtern einer Liste in Java verwendet werden können. Die Klasse Iterable enthält die Methode filter(), die die Listen filtert.

Die Bibliothek Guava kann verwendet werden, indem Sie Ihrem Maven-Projekt die folgende Abhängigkeit hinzufügen:

<dependency>
    <groupId>com.google.guava</groupId>
    <artifactId>guava</artifactId>
    <version>19.0</version>
</dependency>

Versuchen wir nun ein Beispiel mit dem Iterable aus der Google Guava-Bibliothek:

package delftstack;

import com.google.common.*;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

public class Example {
  public static void main(String[] args) {
    List<String> Demo_List =
        new ArrayList<>(Arrays.asList("Jack", "Shawn", "Jhon", "Michelle", "Joey"));

    Iterable<String> Filtered_Iterable =
        Iterables.filter(Demo_List, new com.google.common.base.Predicate<String>() {
          @Override
          public boolean apply(String s) {
            return s.startsWith("J");
          }
        });

    List<String> Filtered_List = Lists.newArrayList(Filtered_Iterable);

    System.out.println(Filtered_List);
  }
}

Der Code filtert die angegebene Liste mit Namen, die mit dem Buchstaben J beginnen. Siehe Ausgabe:

[Jack, Jhon, Joey]

Versuchen wir ein Beispiel mit FluentIterable:

package delftstack;

import com.google.common.*;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

public class Example {
  public static void main(String[] args) {
    List<String> Demo_List =
        new ArrayList<>(Arrays.asList("Jack", "Shawn", "Jhon", "Michelle", "Joey"));

    List<String> Filtered_List = FluentIterable.from(Demo_List)
                                     .filter(new com.google.common.base.Predicate<String>() {
                                       @Override
                                       public boolean apply(String s) {
                                         return s.startsWith("J");
                                       }
                                     })
                                     .toList();

    System.out.println(Filtered_List);
  }
}

Der obige Code verwendet das FluentIterable aus der Google Guava-Bibliothek, um die Namen aus der Liste zu filtern, die mit dem Buchstaben J beginnt. Siehe Ausgabe:

[Jack, Jhon, Joey]

Filtern Sie eine Liste mit Apache Commons

Apache Commons stellt die Klasse CollectionUtils zur Verfügung, mit der eine Liste gefiltert werden kann. Um Apache Commons zu verwenden, fügen Sie Ihrem Maven-Projekt die folgende Abhängigkeit hinzu:

<dependency>
    <groupId>commons-collections</groupId>
    <artifactId>commons-collections</artifactId>
    <version>3.2.2</version>
</dependency>

<dependency>
    <groupId>commons-lang</groupId>
    <artifactId>commons-lang</artifactId>
    <version>2.6</version>
</dependency>

Versuchen wir nun ein Beispiel, um eine Liste mit CollectionUtils zu filtern:

package delftstack;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
import org.apache.commons.collections.CollectionUtils;

public class Example {
  public static void main(String[] args) {
    List<String> Demo_List =
        new ArrayList<>(Arrays.asList("Jack", "Shawn", "Jhon", "Michelle", "Joey"));

    List<String> Filtered_List = new ArrayList<>(Demo_List);
    CollectionUtils.filter(Filtered_List, new Predicate<String>() {
      @Override
      public boolean evaluate(String s) {
        return s.startsWith("J");
      }
    });

    System.out.println(Filtered_List);
  }
}

Der obige Code verwendet die Methode CollectionUtils, um die Liste mit den Namen zu filtern, die mit dem Buchstaben J beginnen. Siehe Ausgabe:

[Jack, Jhon, Joey]
Sheeraz Gul avatar Sheeraz Gul avatar

Sheeraz is a Doctorate fellow in Computer Science at Northwestern Polytechnical University, Xian, China. He has 7 years of Software Development experience in AI, Web, Database, and Desktop technologies. He writes tutorials in Java, PHP, Python, GoLang, R, etc., to help beginners learn the field of Computer Science.

LinkedIn Facebook

Verwandter Artikel - Java List