Как работать со строкой в 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 | ЛинкедИн | "Новостная рассылка"
🚀👉 Размещение таких разработчиков, как вы, в топовых стартапах и технологических компаниях