如何从另一个数组的元素中的每个字符填充数组?

时间:2015-01-13 20:21:59

标签: java arrays

基本上我有一个名为symbols String[] symbols = {"a*", "j^", "y!"}的数组 从那里我想创建另一个数组,其中符号数组中的每个单个字符都在新数组中的单个元素中,类似于char[] newArr = {'a', '*' ..... }

就我而言,我的猜测是迭代第一个数组中的元素然后在该元素中的单个字符的嵌套循环循环中然后将其分配给那里的新数组,但我不确定该怎么做这一点。

3 个答案:

答案 0 :(得分:1)

我不会给你一个完整的解决方案,但我会引导你,所以你有一些事情可以开始。

迭代symbols数组,它包含String。您可以使用String#toCharArray构建一个新的char数组,然后您将从每个String中获得每个char,您可以轻松地从中创建一个String并将其插入到新数组中

答案 1 :(得分:1)

我建议您从String开始制作一个String[] symbols。您可以使用for-each loopStringBuilder

    String[] symbols = { "a*", "j^", "y!" };
    StringBuilder sb = new StringBuilder();
    for (String symbol : symbols) {
        sb.append(symbol);
    }

然后,您可以使用String.toCharArray()将其转换为char[]

    char[] chars = sb.toString().toCharArray();
    System.out.println(Arrays.toString(chars));

输出

[a, *, j, ^, y, !]

答案 2 :(得分:1)

这可能会解决您的问题:

int length = 0;
for(final String s : symbol) { //first get the length of the new array
    length += s.length;
}
char[] result = new char[length];
int pos = 0;
for(final String s : symbol) {  //then fill the new array with data
    System.arraycopy(s.toCharArray(), 0, result, pos, s.length());
    pos += s.length();
}

首先,通过总结所有输入的长度来计算结果的长度。这对于使用给定长度初始化char[]是必要的。

现在我们已经有了正确大小的空结果数组,可以简单地用我们的输入填充它。 我们通过迭代每个输入字符串并将其.getCharArray()复制到当前位置的结果数组来完成此操作。将每个输入符号复制到我们的结果中后,我们增加pos,以便将下一个条目复制到正确的位置。

System.arraycopy(src, srcPos, dest, destPos, length)

的JavaDoc

这也没有使用不必要的Collection API类,并且可以正常使用Java原语:)