如何将字符串的ArrayList转换为char数组

时间:2016-02-03 10:05:16

标签: java arraylist

以下代码将ArrayList<String>转换为char[]并打印输出显示为[back, pack]。在此,char[]包括','' '。有没有办法以另一种方式去除逗号和空格?

ArrayList<String> list = new ArrayList<String>();
list.add("back");
list.add("pack");

char[] chars = list.toString().toCharArray();

for (char i : chars){
   System.out.print(i);
}

5 个答案:

答案 0 :(得分:3)

您可以加入String中的ArrayList<String>,然后从结果中获取char[]来完成此操作:

char[] chars = list.stream().collect(Collectors.joining()).toCharArray();

这里.stream.collect(Collectors.joining())部分是将Strings序列加入一个的Java 8 Stream方法。请参阅:Collectors.joining()文档。

如果您希望结果中的部分之间有任何分隔符,请改用Collectors.joining(delimiter)

还有一个重载,它会在结果中添加前缀和后缀,例如,如果您想要[],请使用Collectors.joining("", "[", "]")

答案 1 :(得分:2)

toString上的list方法是添加逗号和空格的内容,它是String的{​​{1}}代表。由于listlist的集合,您不需要在其上调用String,只需遍历集合,将每个toString转换为字符数组使用String(我假设您可能希望将所有字符串的所有字符一起添加)。

答案 2 :(得分:2)

只需替换此行

即可
char[] chars = list.toString().toCharArray();

以下两行

String str=list.toString().replaceAll(",", "");
char[] chars = str.substring(1, str.length()-1).replaceAll(" ", "").toCharArray();

答案 3 :(得分:1)

Java代码中charArray的字符串:

ArrayList<String> list = new ArrayList<String>();
ArrayList<Character> chars = new ArrayList<Character>();
list.add( "back" );
list.add( "pack" );
for ( String string : list )
{
    for ( char c : string.toCharArray() )
    {
        chars.add( c );
    }
}
System.out.println( chars );

答案 4 :(得分:0)

只是一个例子,你应该如何解决大型列表到数组副本。当心字符数必须小于Integer.MAX。这段代码只是一个如何完成的例子。有很多检查必须实现它才能使代码正常工作。

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class WrappedList {

    //Or replace with some better counter
    int totalCharCount = 0;
    final List<String> list;

    public WrappedList() {
        this(new ArrayList<String>());
    }

    public WrappedList(final List<String> list) {
        this.list = list;
    }

    public void add(final String toAdd) {
        if(toAdd != null) {
            totalCharCount += toAdd.length();
            this.list.add(toAdd);
        }
    }

    public List<String> getList() {
        return Collections.unmodifiableList(list);
    }

    public char[] toCharArray() {
        return this.toCharArray(this.totalCharCount);
    }


    public char[] toCharArray(final int charCountToCopy) {
        final char[] product = new char[charCountToCopy];
        int buffered = 0;
        for (String string : list) {
            char[] charArray = string.toCharArray();
            System.arraycopy(charArray, 0, product, buffered, charArray.length);
            buffered += charArray.length;
        }
        return product;
    }

    //Utility method could be used  also as stand-alone class
    public char[] toCharArray(final List<String> all) {
        int size = all.size();
        char[][] cpy = new char[size][];
        for (int i = 0; i < all.size(); i++) {
            cpy[i] = all.get(i).toCharArray();
        }
        int total = 0;
        for (char[] cs : cpy) {
            total += cs.length;
        }
        return this.toCharArray(total);
    }

    public static void main(String[] args) {
        //Add String iteratively
        WrappedList wrappedList = new WrappedList();
        wrappedList.add("back");
        wrappedList.add("pack");
        wrappedList.add("back1");
        wrappedList.add("pack1");
        final char[] charArray = wrappedList.toCharArray();
        System.out.println("Your char array:");
        for (char c : charArray) {
            System.out.println(c);
        }

        //Utility method one time for all, should by used in stand-alone Utility class
        System.out.println("As util method");
        System.out.println(wrappedList.toCharArray(wrappedList.getList()));
    }

}

另请参阅:system-arraycopy-than-a-for-loop-for-copying-arrays