Ответ 1
Используйте метод Iterables.toArray(Iterable<? extends T> iterable, Class<T> type)
в Гуаве.
Мне нужно вернуть массив String
. Я использую Guava для разделения String
. См. Код ниже
Iterable<String> arrayOfValues = Splitter.on(";").split(myString);
возвращает Iterable
. но мне нужен String[]
. Есть ли способ дать Iterator< Element >
и преобразовать его в Array[]
. Большое спасибо
Используйте метод Iterables.toArray(Iterable<? extends T> iterable, Class<T> type)
в Гуаве.
Если вы используете простой метод Java String.split(regex), вы в порядке. Он возвращает строку [].
"my;string".split(";")
String[] splits = mystring.split(";");
Не используйте причудливые библиотеки, если они вам не нужны.
Вы также можете использовать Guava FluentIterable:
FluentIterable.from(Splitter.on(":").split(mystring)).toArray(String.class)
В guava вы можете преобразовать его как "Follows
String test= "Welcome to java world";
Iterable<String> tokens=Splitter.on(" ").split(test);
String array[]=Iterables.toArray(tokens,String.class);
Если вы просто хотите получить доступ к элементам Iterator, таким как массив, тогда нет необходимости конвертировать. Вы можете напрямую обращаться к этим элементам по индексу
например
System.out.println(Iterables.get(tokens,2));
Несмотря на то, что в этом вопросе говорится: "Преобразовать Iterator в массив", ответы только объясняют, как преобразовать Iterable в Array.
Итак, чтобы преобразовать Iterator в Array с Guava, вы можете использовать Iterators.toArray(Iterator<? extends T> iterator, Class<T> type)
.