Рубрики
Без рубрики

Преобразование массива символов в строку в Java

Изучите различные способы преобразования заданного массива символов в его строковое представление в Java.

Автор оригинала: Shubhra Srivastava.

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"));
}

Это один из самых простых способов преобразования массива char в Строку . Он внутренне вызывает String#valueOf для создания String объекта.

3. Строка.Значение()

И говоря о значении(), мы даже можем использовать его напрямую:

@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. toString построителя строк()

Что делать, если мы хотим сформировать Строку из массива символов массивов?

Затем мы можем сначала создать экземпляр StringBuilder и использовать его метод append(char[]) для добавления всего содержимого вместе.

Позже мы будем использовать метод toString () , чтобы получить его Строковое представление:

@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

С помощью метода Arrays.stream(объект T []) мы можем открыть поток над массивом типа 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"));
}

Предостережение при таком подходе заключается в том, что мы вызываем значение() над каждым Символом элементом, и поэтому это будет довольно медленно.

6. Столяр на Общей основе Из Гуавы

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

@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"));
}

Опять же, обратите внимание, что метод join() будет принимать только Символьный массив, а не примитивный символ массив.

7. Заключение

В этом уроке мы рассмотрели способы преобразования заданного массива символов в его Строковое представление в Java.

Как обычно, все примеры кода можно найти на GitHub .