簡體   English   中英

在Guava或Apache Commons Collections中是否有toArray()的通用版本?

[英]Is there any generic version of toArray() in Guava or Apache Commons Collections?

我正在尋找的是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 []數組一樣快)。

來自番石榴的Iterables.toArray()

你可以縮短它

String[] array = strings.toArray(new String[0]);

這也恰好更有效率。

使用Java 8,您也可以使用它,但它似乎不必要地復雜並且可能更慢:

String[] array = strings.stream().toArray(String[]::new);     // Java 8

Guava語法是具體的

Iterables.toArray(strings, String.class);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM