Filterliste in Java
- Filtern Sie eine Liste mit Java 7 und höher
- Filtern Sie eine Liste mit Java 8
- Filtern Sie eine Liste mit Google Guava
- Filtern Sie eine Liste mit Apache Commons
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 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