Как работать со строкой в ​​Java

Java предоставляет множество способов объединения строк String, но иногда, если мы не обращаем внимания на null строк, мы можем объединить null в результат, что, очевидно, не то, что нам нужно.

В этой статье я расскажу о некоторых способах избежать значений null при объединении String.

Анализ случаев.

Если мы хотим объединить массивы строк, мы можем просто использовать оператор + для их объединения, но мы можем столкнуться со значениями null.

Это объединит все элементы в результирующую строку следующим образом:

https://gist.github.comnull

Однако мы нашли проблему, и конечное значение null также объединяется в виде строки, что явно не то, что нам нужно.

Кроме того, даже если мы работаем на Java 8 или выше, а затем используем статический метод String.join() для объединения строк, мы получим вывод со значениями null.

Результат также следующий.

https://gist.github.comnull

Итак, как решить эту проблему? Ниже мы поделимся некоторыми решениями.

Чтобы облегчить последующую демонстрацию кода, мы извлекаем метод, который может передавать строку и возвращать ненулевую строку.

# 1. Используйте String.concat() .

String.concat() — это метод, который поставляется с классом String. Очень удобно использовать этот метод для конкатенации строк.

Поскольку вызывается метод nullToString(), в результате нет значений null.

№ 2. Использование StringBuilder.

Класс StringBuilder предоставляет множество полезных и удобных методов построения строк.

Наиболее часто используется метод append(), который использует append() для объединения строк и сочетается с методом nullToString(), чтобы избежать значений null.

Можно получить следующие результаты:

https://gist.github.com

# 3. Использование класса StringJoiner (Java 8+).

Класс StringJoiner предоставляет более мощную функцию объединения строк. Он может не только указать разделитель во время объединения, но также указать префикс и суффикс во время соединения. Здесь мы можем использовать его метод add() для соединения строк.

То же самое будет использовать метод nullToString(), чтобы избежать нулевых значений.

# 4. Использование Streams.filter (Java 8+).

Stream API — это мощный класс операций с потоками, представленный в Java 8, который может выполнять стандартную фильтрацию, сопоставление, обход, группировку, статистику и другие операции.

Операция фильтрации filter может получить функцию Predicate.

Интерфейс функции Predicate аналогичен представленному ранее интерфейсу Function.

Это функциональный интерфейс.

Он может принимать общий параметр <T>, а возвращаемое значение имеет логический тип.

Predicate часто используется для данных filter.

Следовательно, мы можем определить Predicate для проверки строки null и передать ее методу filter() Stream API.

Наконец, используйте метод Collectors.joining(), чтобы соединить оставшиеся строки, отличные от null.

# 5. Используйте оператор +.

Использование оператора + может решить проблему, но не рекомендуется.

Мы знаем, что String — неизменяемый объект. Использование знака + будет часто создавать строковый объект, и каждый раз в памяти будет создаваться новая строка, поэтому потребление производительности при использовании знака + для соединения строк очень велико.

Обобщить.

В этой статье представлены несколько способов объединения строк и обработки NULL, и разные способы могут подходить для разных сценариев.

Обратите внимание, что объединение строк является дорогостоящей операцией, вот результаты сравнительного анализа нескольких объединений с использованием JMH.

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

Спасибо за прочтение.

Если вам нравятся такие истории и вы хотите поддержать меня, пожалуйста, хлопните мне в ладоши.

Ваша поддержка очень важна для меня — спасибо.

Повышение уровня кодирования

Спасибо, что являетесь частью нашего сообщества! Перед тем, как ты уйдешь:

  • 👏 Хлопайте за историю и подписывайтесь на автора 👉
  • 📰 Смотрите больше контента в публикации Level Up Coding
  • 🔔 Подписывайтесь на нас: Twitter | ЛинкедИн | "Новостная рассылка"

🚀👉 Размещение таких разработчиков, как вы, в топовых стартапах и технологических компаниях