美文网首页程序园程序员
在java中将Character Array转成String

在java中将Character Array转成String

作者: 赵阳_c149 | 来源:发表于2019-11-05 17:18 被阅读0次

这里简要介绍java中将Character Array转成String的几种方法

String Constructor

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

这是最简单的一种方法。在内部,他调用了String#valueOf方法创建一个String对象。

String.valueOf()

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

既然说到了valueOf(),我们甚至可以直接用它来完成任务。从语法上来说,String#copyValueOfvalueOf()是相同的,而且只在java的早期几个版本略有不同。现在,copyValueOf()是多余的,并不推荐使用。

StringBuilder‘s toString()

如果我们想从char array的数组中构建一个String,就可以初始化一个StringBuilder实例,然后用append(char[])方法将所有的内容逐个依序添加到StringBuilder的末尾。最后,可以用toString()方法将其以String的形式表示出来:

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

Java 8 Streams

通过Arrays.stream(T[] object)方法,可以为一个T类型的数组打开一个stream。考虑我们有一个Character数组(Arrays.stream接受其他基本类型的非box数组:double[],int[],和long[],但是不接受char[]【1】),可以用Collectors.joining() 操作去构建一个String的实例:

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

这一方式非常慢,因为必须为每一个Character对象调用valueOf()

Guava Common Base Joiner

如果我们需要生成一个由分隔符分隔的String,guava给我们提供了一个很好用的方法:

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()方法只接受Character数组,而不接受char数组。

翻译自:
https://www.baeldung.com/java-char-array-to-string
【1】可能设计者为了避免所谓的类型和方法数量的爆炸。

The designers explicitely chose to avoid the explosion of classes and methods by limiting the primitive streams to 3 types,

why-is-string-chars-a-stream-of-ints-in-java-8

相关文章

网友评论

    本文标题:在java中将Character Array转成String

    本文链接:https://www.haomeiwen.com/subject/tuhebctx.html