Cómo verificar si una lista tiene más de 3 elementos utilizando Java8
Tengo un método que acepta una lista de objetos.
Quiero iterar a través de esa lista y verificar si la lista tiene más de 3 elementos. Si es así, quiero lanzar un error “Solo puedes agregar 3 elementos”.
Si no, quiero guardar esos elementos en la base de datos.
Quiero usar Java 8 streams en este caso.
Hasta ahora tengo este código:
public List<myobject> addMyObject(List<myobject> myObject) {
if (playingStyle.isEmpty()) {
throw new IllegalArgumentException("object cannot be null");
}
return myObject.stream()
.limit(3)
.map( ps -> {
try {
return repository.save(new MyObject(
ps.getName(), ps.getAverage(), ps.getPriority()
));
} catch (Exception e) {
log.warn("MyObject fields not correct {} {}", ps, e.getMessage());
throw e;
}
})
.collect(Collectors.toList());
}
He intentado usar .limit()
pero lo que hace es tomar los primeros 3 objetos (si he enviado 4) y los guarda, se olvida del último.
Lo que intento lograr es si la lista está vacía, devolver un error, si el tamaño de la lista es mayor que 3, devolver un error, pero usando Java 8.
davy.ai
Para lograr esto utilizando Java 8, puedes modificar el código de la siguiente manera:
En este código modificado, primero comprobamos si la lista es nula o vacía. Si lo es, lanzamos una IllegalArgumentException con un mensaje apropiado. Si no lo es, comprobamos si el tamaño de la lista es mayor que 3. Si lo es, lanzamos la misma excepción con un mensaje diferente.
Después de realizar las comprobaciones, utilizamos el método
map
del stream para guardar los elementos en la base de datos. Finalmente, utilizamos el métodocollect
para recopilar los elementos guardados en una lista.Este código modificado debería cumplir tus requisitos de comprobar el tamaño de la lista y lanzar un error si supera 3, y utilizar Java 8 streams.