Lista de filtros en Java
- Filtrar una lista usando Java 7 y superior
- Filtrar una lista usando Java 8
- Filtrar una lista usando Google Guava
- Filtrar una lista usando Apache Commons
Con frecuencia se requiere filtrar una lista mientras se trabaja en Java. Varios métodos para filtrar una lista en Java usan el núcleo de Java y diferentes bibliotecas.
Este tutorial demuestra cómo filtrar una lista en Java.
Filtrar una lista usando Java 7 y superior
Podemos recorrer la lista usando Java 7 y las versiones anteriores para filtrar una lista en Java.
Usa el bucle for
Un método es utilizar el bucle for
y la sentencia condicional. Veamos el ejemplo:
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);
}
}
El código anterior usa for
y if
para filtrar los nombres de la lista dada con la letra J
. Ver salida:
[Jack, Jhon, Joey]
Utilice el método remove()
Otro método es utilizar el método remove()
de la clase Iterator
para filtrar la lista. Veamos el ejemplo:
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);
}
}
El código usa Iterator
con el método remove()
y el bucle while
para filtrar los nombres con la letra J
de la lista dada. Ver salida:
[Jack, Jhon, Joey]
Filtrar una lista usando Java 8
Para filtrar una lista en Java 8, podemos usar el enfoque en el que convertimos la lista en una secuencia y luego la filtramos. Este es el método recomendado para filtrar una lista en Java 8.
Ver el ejemplo:
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);
}
}
El código anterior usa el stream()
para filtrar la lista con los nombres con la letra J
. Ver salida:
[Jack, Jhon, Joey]
Como podemos ver, el código anterior convierte la lista en una cadena en la salida. También podemos convertir la salida a una Lista usando el Stream
.
Ver el ejemplo:
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);
}
}
El código anterior convertirá la salida de la lista filtrada en una lista. Ver salida:
[Jack, Jhon, Joey]
Filtrar una lista usando Google Guava
La biblioteca Guava
contiene Iterable
y FluentIterable
que se pueden usar para filtrar una lista en Java. La clase Iterable
incluye el método filter()
, que filtra las listas.
La biblioteca Guava
se puede usar agregando la siguiente dependencia a su proyecto Maven:
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>19.0</version>
</dependency>
Ahora probemos un ejemplo usando el Iterable
de la biblioteca de Google Guava:
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);
}
}
El código filtrará la lista dada con nombres que comiencen con la letra J
. Ver salida:
[Jack, Jhon, Joey]
Probemos un ejemplo con 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);
}
}
El código anterior utiliza el FluentIterable
de la biblioteca de Google Guava para filtrar los nombres de la lista, que comienza con la letra J
. Ver salida:
[Jack, Jhon, Joey]
Filtrar una lista usando Apache Commons
Apache Commons proporciona la clase CollectionUtils
, que se puede utilizar para filtrar una lista. Para usar Apache Commons, agregue la siguiente dependencia a su proyecto Maven:
<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>
Ahora probemos un ejemplo para filtrar una lista usando CollectionUtils
:
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);
}
}
El código anterior usa el método CollectionUtils
para filtrar la lista con los nombres que comienzan con la letra J
. Ver salida:
[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