Как бы я создал строку, используя массив символов в Java? - PullRequest
1 голос
/ 17 января 2020

Каков был бы наиболее эффективный способ создания новой строки с использованием Character[]? Это довольно просто сделать с примитивом char[], но, к сожалению, конструктор String не включает опцию для Character[]. Преобразование в char[] кажется громоздким. Есть ли эффективный способ построить строку с помощью Character[]?

Спасибо.

Ответы [ 4 ]

4 голосов
/ 17 января 2020

Одним из решений является использование Stream с Collectors#joining:

Character[] chars = { 'H', 'e', 'l', 'l', 'o' };

String s = Arrays.stream(chars)
                 .map(Object::toString)
                 .collect(Collectors.joining());

System.out.println(s);

Выход:

Hello
0 голосов
/ 17 января 2020

Есть ли эффективный способ построить строку, используя только Character[]?

Нет. Нет конструкторов, которые могут это сделать.

Наиболее эффективный подход, вероятно, будет преобразовывать его в char[], как вы сами предложили:

char[] chars = new char[characters.length];
for (int i = characters.length - 1; i >= 0; i--) {
    chars[i] = characters[i];
}
String s = String.valueOf(chars);

Помните, что «эффективный» не означает «в одной строке». Решение на основе потока будет менее эффективным, поскольку оно создаст (и, в конечном итоге, соберет мусор) строку для каждого персонажа.

0 голосов
/ 17 января 2020

Один способ преобразования массива Character в String

Character[] chars = { 'H', 'e', 'l', 'l', 'o' };

String str = Stream.of(chars)
             .map(String::valueOf)
             .collect(Collectors.joining());

System.out.println(str);

Выход:

Hello
0 голосов
/ 17 января 2020
/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package javaapplication2;

public class as {

    public static void main(String[] args) {
        Character[] chars = {'T', 'e', 'c', 'h', 'i', 'e', ' ',
            'D', 'e', 'l', 'i', 'g', 'h', 't'};

        StringBuilder word=new StringBuilder();
        for (Character char1 : chars) {
            word.append(char1);
        }
        System.out.println(word);
    }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...