Перетворити масив символів на рядок на Java

1. Огляд

У цьому короткому посібнику ми розглянемо різні способи перетворення масиву символів у рядок на Java.

2. Конструктор рядків

Клас String має конструктор, який приймає масив char як аргумент:

@Test public void whenStringConstructor_thenOK() { final char[] charArray = { 'b', 'a', 'e', 'l', 'd', 'u', 'n', 'g' }; String string = new String(charArray); assertThat(string, is("baeldung")); }

Це один з найпростіших способів перетворення масиву символів у рядок . Він внутрішньо викликає String # valueOf для створення об’єкта String .

3. String.valueOf ()

А якщо говорити про valueOf (), ми можемо навіть використовувати його безпосередньо:

@Test public void whenStringValueOf_thenOK() { final char[] charArray = { 'b', 'a', 'e', 'l', 'd', 'u', 'n', 'g' }; String string = String.valueOf(charArray); assertThat(string, is("baeldung")); }

Рядок # copyValueOf - це ще один метод, який семантично еквівалентний методу valueOf (), але мав будь-яке значення лише в перших кількох випусках Java. На сьогоднішній день, copyValueOf () метод є надмірною , і ми не рекомендуємо використовувати його.

4. StringBuilder 's toString ()

Що робити, якщо ми хочемо сформувати рядок із масиву масивів char ?

Потім ми можемо спочатку створити екземпляр екземпляра StringBuilder і використовувати його метод append (char []) для додавання всього вмісту разом.

Пізніше ми використаємо метод toString (), щоб отримати його подання String :

@Test public void whenStringBuilder_thenOK() { final char[][] arrayOfCharArray = { { 'b', 'a' }, { 'e', 'l', 'd', 'u' }, { 'n', 'g' } }; StringBuilder sb = new StringBuilder(); for (char[] subArray : arrayOfCharArray) { sb.append(subArray); } assertThat(sb.toString(), is("baeldung")); }

Ми можемо додатково оптимізувати наведений вище код, створивши інстанцію StringBuilder точної довжини, яка нам потрібна.

5. Потоки Java 8

З (об'єкта T []) Arrays.stream методу, ми можемо відкрити потік над масивом типу T .

Враховуючи, що у нас є масив символів , ми можемо використовувати операцію Collectors.joining () для формування екземпляра рядка :

@Test public void whenStreamCollectors_thenOK() { final Character[] charArray = { 'b', 'a', 'e', 'l', 'd', 'u', 'n', 'g' }; Stream charStream = Arrays.stream(charArray); String string = charStream.map(String::valueOf).collect(Collectors.joining()); assertThat(string, is("baeldung")); }

Застереження при такому підході полягає в тому, що ми викликаємо valueOf () над кожним елементом Character, і тому це буде досить повільно.

6. Гуава Common Base Joiner

Припустимо, що рядок, який нам потрібно створити, є роздільником. Гуава дає нам зручний метод:

@Test public void whenGuavaCommonBaseJoiners_thenOK() { final Character[] charArray = { 'b', 'a', 'e', 'l', 'd', 'u', 'n', 'g' }; String string = Joiner.on("|").join(charArray); assertThat(string, is("b|a|e|l|d|u|n|g")); }

Знову ж , зверніть увагу , що приєднатися () метод буде приймати тільки Character масив , а не примітивний символ масиву.

7. Висновок

У цьому навчальному посібнику ми дослідили способи перетворення заданого масиву символів у його подання String у Java.

Як завжди, усі приклади коду можна знайти на GitHub.