Recientemente tuve la necesidad de hacer un escenario de 'caso especial' si solo existe un elemento en la colección. Comprobación de ...size() == 1
y recuperar mediante el uso de ...iterator.next()
parecían feas por lo que he creado dos métodos en la clase de cerveza casera Colecciones: haceComprueba si solo existe un elemento usando Guava
public class Collections {
public static <T> boolean isSingleValue(Collection<T> values) {
return values.size() == 1;
}
public static <T> T singleValue(Collection<T> values) {
Assert.isTrue(isSingleValue(values));
return values.iterator().next();
}
}
Pocos días descubrí que tiene guayaba método llamado Iterables.getOnlyElement. Cubre mi necesidad y reemplaza singleValue
, pero no puedo encontrar coincidencias para isSingleValue
. ¿Es eso por diseño? ¿Vale la pena solicitar una función para tener el método Iterables.isOnlyElement
?
EDIT: Dado que había pocas upvotes decidí abrir la mejora de la guayaba - issue 957. Resolución final - 'WontFix'. Los argumentos son muy similares a lo que Thomas/Xaerxess proporcionó.
Esto no es clara, ¿qué quiere decir "voy a resolver"? ¿Estás diciendo que esta es una solución o que estás trabajando en el problema? –
Esta es la solución, para mí. – Falci