我正在寻找的是Object[] java.util.Collection.toArray()
的通用版本或使用T[] java.util.Collection.toArray(T[] array)
的不那么详细的替代方法。我现在可以写:
Collection<String> strings;
String[] array = strings.toArray(new String[strings.size()]);
我正在寻找的是:
@SuppressWarnings("unchecked")
public static <T> T[] toArray(Collection<T> collection, Class<T> clazz) {
return collection.toArray((T[]) Array.newInstance(clazz, collection.size()));
}
然后我可以用作:
String[] array = Util.toArray(strings, String.class);
在Guava或Commons Collections中实现的是什么?
当然我可以编写自己的(上面的),这似乎和theArray(T []数组一样快)。
答案 0 :(得分:43)
答案 1 :(得分:9)
您可以使用
缩短它String[] array = strings.toArray(new String[0]);
也恰好更有效率。
使用Java 8,您也可以使用它,但它似乎不必要地复杂并且可能更慢:
String[] array = strings.stream().toArray(String[]::new); // Java 8
答案 2 :(得分:7)
Guava语法具体是
Iterables.toArray(strings, String.class);