私が探しているのは、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);
このようなものはグアバまたはコモンズコレクションに実装されていますか?
もちろん、toArray(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);