Объединение элементов массива в Java: аналог PHP join()

Пройдите тест, узнайте какой профессии подходите

Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Быстрый ответ

Для эффективной агрегации элементов массива в строку с использованием определенного разделителя в Java вы можете использовать метод String.join(). Он позволяет решить данную задачу наглядно и просто:

Java
Скопировать код
String result = String.join("-", "Java", "is", "fun");
// результат: "Java-is-fun"

Этот метод работы схож с функцией join() в PHP и доступен начиная с Java 8.

Кинга Идем в IT: пошаговый план для смены профессии

Расширяем инструментарий

StringUtils из Apache Commons Lang

В случае необходимости дополнительных возможностей вы можете обратиться к StringUtils.join():

Java
Скопировать код
String[] words = {"Java", "is", "thrilling"};
String joinedStrings = StringUtils.join(words, "--");
// Результат: "Java--is--thrilling"

В духе Java 8 – Arrays.stream()

Java 8 предлагает изящный метод объединения строк через Arrays.stream() и Collectors.joining():

Java
Скопировать код
String[] words = {"Java", "8", "Rocks"};
String result = Arrays.stream(words).collect(Collectors.joining("!!"));
// Результат: "Java!!8!!Rocks"

Традиционный подход – StringBuilder

Если вам требуется полный контроль над процессом, можно использовать StringBuilder:

Java
Скопировать код
StringBuilder sb = new StringBuilder();
for (String s : array) {
  if (sb.length() > 0) {
    sb.append(","); // Добавляем разделитель
  }
  sb.append(s);
}
// Результат: у вас в распоряжении объединенная строка

Stream API и StringJoiner – Повышаем уровень

Для сложных задач подойдет комбинирование Stream API и StringJoiner:

Java
Скопировать код
StringJoiner sj = new StringJoiner("!!");
for (String s : array) {
  sj.add(s);
}
// Результат: креативная строка, объединенная "!!"

Выбор между производительностью и читаемостью определяет, какой подход будет предпочтительнее.

Визуализация

Визуально можно представить работу String.join() как процесс нанизывания игрушечных автомобилей 🚗 на мост 🌉, выступающий в роли разделителя.

Markdown
Скопировать код
Машины:  🚗   🚗
Мост: 🌉

Используем String.join() для соединения:

Java
Скопировать код
String[] cars = {"Red-Car", "Blue-Car"};
String joinedCars = String.join("🌉", cars);
// joinedCars: "Red-Car🌉Blue-Car"
Markdown
Скопировать код
До: 🚗   🚗
После: 🚗🌉🚗 // 🌉: Мост – разделитель

String.join() объединяет элементы массива с разделителем по вашему выбору.

Дополнительные замечания

Сложности с граничными условиями? Используйте пользовательскую функцию

Если вам необходима специальная обработка ситуаций на границах массива, создайте пользовательскую функцию:

Java
Скопировать код
public static String customJoin(String[] array, String separator) {
  StringBuilder result = new StringBuilder();
  for (int i = 0; i < array.length; i++) {
    result.append(array[i]);
    if (i < array.length – 1) result.append(separator);
  }
  return result.toString();
}

Android-разработчики, ваш спасатель – TextUtils.join()

Разработчикам на Android могут пригодиться возможности TextUtils.join():

Java
Скопировать код
String[] words = {"Android", "is", "cool"};
String joinedWords = TextUtils.join(" ", words);
// Результат: "Android is cool" – согласитесь, это звучит здорово!

Нужны особые решения?

Если стандартных подходов недостаточно, создайте свою логику:

Java
Скопировать код
// Пример функции, игнорирующей null и пустые строки
public static String customFilteredJoin(String[] array, String delimiter) {
  return Arrays.stream(array)
    .filter(s -> s != null && !s.isEmpty())  // Фильтруем null и пустые значения
    .collect(Collectors.joining(delimiter));
}

Полезные материалы

  1. Документация Java. Метод String.join() — Официальная документация Java.
  2. Arrays (Java Platform SE 7) — Информация о Arrays.toString() в Java.
  3. StringUtils (Apache Commons Lang 3.14.0 API) — Более подробно о StringUtils.join() из Apache Commons, полезном инструменте для работы со строками.
  4. Обсуждения операций со строками в Java — Мнения и советы сообщества Stack Overflow, связанные с функциональностью, аналогичной join() из PHP.