Las operaciones intermedias con Streams en Java son operaciones que transforman un Stream en otro Stream. Estas operaciones son "lazy", lo que significa que no se ejecutan inmediatamente, sino que se ejecutan solo cuando es necesario. El método sorted()
es una de estas operaciones intermedias.
¿Te está gustando esta lección?
Inicia sesión para no perder tu progreso y accede a miles de tutoriales, ejercicios prácticos y nuestro asistente de IA.
Más de 25.000 desarrolladores ya confían en CertiDevs
La operación sorted()
es un método intermedio que se usa en los Streams para ordenar los elementos de ese Stream. Este método devuelve un Stream que consta de los elementos del Stream original, pero ordenados.
Sintaxis:
Stream<T> sorted();
Stream<T> sorted(Comparator<? super T> comparator);
Existen dos variantes de este método:
-
sorted()
: Esta variante no toma ningún argumento y devuelve un Stream que consiste en los elementos del Stream original, pero en orden ascendente. Los elementos del Stream deben ser instancias de la interfazComparable
para usar este método. -
sorted(Comparator<? super T> comparator)
: Esta variante toma un objeto de tipoComparator
como argumento y devuelve un Stream que consiste en los elementos del Stream original, pero ordenados según elComparator
proporcionado.
Veamos algunos ejemplos de cómo usar este método.
Ejemplo 1: Usando sorted()
sin argumentos
import java.util.stream.Stream;
public class Main {
public static void main(String[] args) {
Stream.of("E", "A", "B", "D", "C")
.sorted()
.forEach(System.out::print); // Imprime: ABCDE
}
}
En este ejemplo, se crea un Stream de Strings y luego se ordena usando el método sorted()
. Dado que los Strings implementan la interfaz Comparable
, el ordenamiento se realiza correctamente.
Ejemplo 2: Usando sorted(Comparator<? super T> comparator)
import java.util.Comparator;
import java.util.stream.Stream;
public class Main {
public static void main(String[] args) {
Stream.of("E", "A", "B", "D", "C")
.sorted(Comparator.reverseOrder())
.forEach(System.out::print); // Imprime: EDCBA
}
}
En este ejemplo, se utiliza un Comparator
que ordena en orden descendente, por lo que los elementos del Stream se imprimen en orden inverso.
La programación funcional en Java permite el uso de operaciones en cadena para realizar tareas más complejas. Por ejemplo, se pueden usar los métodos filter()
, map()
y sorted()
juntos para filtrar elementos, transformarlos y luego ordenarlos.
import java.util.Comparator;
import java.util.stream.Stream;
public class Main {
public static void main(String[] args) {
Stream.of("E2", "A1", "B1", "D3", "C2")
.filter(s -> s.endsWith("1")) // Filtra los elementos que terminan en "1"
.map(String::toUpperCase) // Convierte los elementos a mayúsculas
.sorted(Comparator.reverseOrder()) // Ordena los elementos en orden descendente
.forEach(System.out::println); // Imprime los elementos
}
}
Este código imprimirá:
B1
A1
En resumen, la operación intermedia sorted()
en los Streams de Java permite ordenar los elementos de un Stream de manera eficiente y expresiva en el contexto de la programación funcional. Es importante recordar que los elementos del Stream deben ser Comparable
si se utiliza sorted()
sin un Comparator
, o se debe proporcionar un Comparator
adecuado si se desea un orden diferente del orden natural de los elementos. La flexibilidad y potencia de las operaciones con Streams hacen de la programación funcional en Java una herramienta potente y flexible para el manejo de datos.
Aprendizajes de esta lección
- Aprender el uso y propósito del método sorted().
- Comprender la diferencia entre sorted() sin argumentos y sorted() con un Comparator.
- Entender cómo integrar sorted() en una cadena de operaciones Stream.
- Practicar con ejemplos de código para afianzar el aprendizaje del uso de sorted().
Completa Java y certifícate
Únete a nuestra plataforma y accede a miles de tutoriales, ejercicios prácticos, proyectos reales y nuestro asistente de IA personalizado para acelerar tu aprendizaje.
Asistente IA
Resuelve dudas al instante
Ejercicios
Practica con proyectos reales
Certificados
Valida tus conocimientos
Más de 25.000 desarrolladores ya se han certificado con CertiDevs