Obtener el mínimo o máximo de dos, una lista o stream de valores en Java

Publicado por pico.dev el .
blog-stack java planeta-codigo programacion
Comentarios

Java

Si tenemos dos valores y queremos obtener el menor con una línea de código, podemos obtenerlo con un a sentencia if o con el operador condicional ? :. Si queremos obtener el menor de tres valores con sentencias if o el operador ? : el problema aparentemente sencillo se complica y si optamos por usar una lista de valores tratándola como si el tamaño fuese desconocido quizá usemos un bucle for junto con una variable que mantenga el menor valor encontrado hasta el momento usando un if que compare el valor menor encontrado con el valor actual de la lista.

Sin embargo, en la API de Java hay dos métodos que permiten simplificar esta tarea, para dos valores podemos usar el método Math.min() y para una lista de valores de tamaño desconocido podemos usar el método Collections.min(). Usando un Stream aún es más sencillo ya que estos poseen un método Stream.min() y Stream.max() que devuelven el valor mínimo y máximo.

Este sería el código para los casos de comparar dos elementos, una lista y un stream de valores. Se que se puede probar con la herramienta JShell incluída entre otras novedades de Java 9. En la lista de 20 valores aleatorios el menor es el 2 y entre la variable a y b el valor mínimo es 19.

Diferentes formas de obtener el valor mínimo y máximo

Para obtener el máximo sería similar pero usando el método Math.max(), Collections.max() o Stream.max().