Преобразование массива объектов в строковой в Java
Быстрый и простой способ
Если вам нужно преобразовать массив объектов в массив строк в Java, воспользуйтесь методом Arrays.stream(), который в сочетании с методом map() применяет функцию toString() к каждому элементу. Завершить преобразование и получить нужный массив строк позволяет метод toArray():
Object[] objArray = { "Java", 42, false };
String[] strArray = Arrays.stream(objArray)
.map(String::valueOf)
.toArray(String[]::new);

Обработка null
Если в массиве присутствует значение null, и вы хотите избежать исключения NullPointerException при вызове toString(), используйте Objects.toString(), указывая альтернативное значение для null:
String[] strArray = Arrays.stream(objArray)
.map(o -> Objects.toString(o, "null"))
.toArray(String[]::new);
Для избежания проблем с приведением типов
Если вы точно знаете, что все объекты в массиве являются строками, но хотите игнорировать ClassCastException, воспользуйтесь методом Arrays.copyOf():
String[] strArray = Arrays.copyOf(objArray, objArray.length, String[].class);
Когда недостаточно toString()
Если стандартный метод toString() не обеспечивает требуемый формат вывода, особенно для пользовательских классов, можно определить собственную функцию преобразования:
String[] strArray = Arrays.stream(objArray)
.map(e -> e instanceof YourCustomClass ? ((YourCustomClass)e).customToString() : e.toString())
.toArray(String[]::new);
Преобразование с использованием потоков
Вы можете преобразовать объекты в строки, используя потоки и методы map() и toArray():
String[] sorcererTools = Arrays.stream(muggleTools)
.map(Object::toString)
.toArray(String[]::new);
Высокопроизводительное копирование массивов с помощью System.arraycopy
Для операций копирования массивов с высокой производительностью используйте метод System.arraycopy():
String[] strArray = new String[objArray.length];
System.arraycopy(objArray, 0, strArray, 0, objArray.length);
Сочетание Arrays.asList и toArray
Сочетания методов Arrays.asList() и toArray() иногда могут быть предпочтительнее за счет простоты и изящества, даже при немного меньшей скорости:
String[] strArray = Arrays.asList(objArray).toArray(new String[0]);
Обработка исключительных ситуаций
Важно быть готовым к неожиданностям, чтобы ничто не могло помешать вашему процессу:
String[] strArray = Arrays.stream(objArray)
.map(e -> e instanceof YourCustomClass ? ((YourCustomClass)e).customToString() : Objects.toString(e, "null"))
.toArray(String[]::new);
Улучшение представления массива
Избавьте строковое представление массива от скобок и запятых, воспользовавшись методами Arrays.toString(), replaceAll() или split():
String strRepresentation = Arrays.toString(objArray);
String cleanString = strRepresentation.replaceAll("[\\[\\]]", "").replace(", ", "-");
Полезные материалы
- Как преобразовать ArrayList<String> в String[]
- Официальная документация по работе с массивами в Java SE 8
- Полное руководство по использованию Java 8 Stream API
- Разбор метода Arrays.toString() в контексте Java SE 7.
- Изучите возможности класса Collectors
- Учебник по приведению типов в Java.
- Курс по объектно-ориентированному программированию в Java.


