Подтвердить что ты не робот

Создание строки [] из разделителя Guava

Есть ли более эффективный способ создания массива строк из Guava Splitter, чем следующее?

Lists.newArrayList(splitter.split()).toArray(new String[0]);
4b9b3361

Ответ 1

Вероятно, не намного эффективнее, но намного яснее будет Iterables.toArray(Iterable, Class)

Это в значительной степени делает то, что вы делаете уже:

public static <T> T[] toArray(Iterable<? extends T> iterable, Class<T> type) {
    Collection<? extends T> collection = toCollection(iterable);
    T[] array = ObjectArrays.newArray(type, collection.size());
    return collection.toArray(array);
}

Используя collection.size(), это должно быть даже тиком быстрее, чем создание массива нулевой длины только для информации о типе и toArray() создать массив с правильным размером.

Ответ 2

Как насчет

Iterables.toArray(splitter.split(), String.class);

поскольку существует Iterables.toArray() метод