java - spanish - guava maven
¿Hay alguna versión genérica de toArray() en Guava o Apache Commons Collections? (3)
La sintaxis de la guayaba es específicamente
Iterables.toArray(strings, String.class);
Lo que estoy buscando es una versión genérica de Object[] java.util.Collection.toArray()
o una alternativa menos detallada a usar T[] java.util.Collection.toArray(T[] array)
. Actualmente puedo escribir:
Collection<String> strings;
String[] array = strings.toArray(new String[strings.size()]);
Lo que busco es algo como:
@SuppressWarnings("unchecked")
public static <T> T[] toArray(Collection<T> collection, Class<T> clazz) {
return collection.toArray((T[]) Array.newInstance(clazz, collection.size()));
}
que luego puedo usar como:
String[] array = Util.toArray(strings, String.class);
Entonces, ¿algo como esto está implementado en Guava o en Commons Collections?
Por supuesto, puedo escribir el mío (lo anterior), que parece ser tan rápido como toArray (T [] array).
Puedes acortarlo con
String[] array = strings.toArray(new String[0]);
Lo que también pasa a ser más eficiente.
Con Java 8 también puedes usar esto, pero parece innecesariamente complicado y probablemente sea más lento:
String[] array = strings.stream().toArray(String[]::new); // Java 8
Iterables.toArray()
de guava.