如何使用String数组和String创建数组

时间:2016-08-02 05:22:45

标签: java arrays string

我需要将动态字符串值附加到具有已知值的新字符串数组。

static final String [] ARRAY = {"A","B","C"};
String d = "D"; // could be changing dynamically.

我的问题是将值附加到具有动态字符串值的新字符串数组。

我需要这样的东西。

String [] EXPECTED_ARRAY = {ARRAY, d}; // does not compile.

预期输出:(本地字符串数组)

String [] EXPECTED_ARRAY = {"A", "B", "C", d};

提前致谢。 BTW:Arrays,ArrayList可以很容易地做到这一点。还有其他替代方法。

5 个答案:

答案 0 :(得分:2)

  

还有其他替代方法吗?

如果要向数组中添加元素(具有固定大小),可以在arraycopy内部ArrayList进行内容:

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

或者为动态元素分配更多空间,如果您确切知道结果数组的长度:

String[] array = new String[EXPECTED_SIZE];

但它并不聪明,因为ArrayList类已经存在完全用于这些目的。

答案 1 :(得分:1)

您可以创建自己的方法,如下面的

String [] EXPECTED_ARRAY = append(ARRAY, d);


String[] append(String a[],String str){
    String[] b=new String[a.length+1];
    int i=0;
    for(;i<a.length;i++)
       b[i]=a[i];
    b[i]=str;
    return b;        
}

答案 2 :(得分:0)

正则表达式在这里使用并不是一件好事。使用标准方法:

static final String [] ARRAY = {"A","B","C"};
public static void main(String[] args) throws Exception
{

    String d = "D"; // could be changing dynamically.
    List<String> l = new ArrayList<>(Arrays.asList(ARRAY));
    l.add(d); // can add multiple dynamic values.
    String[] arr = l.toArray(new String[l.size()]);
    System.out.println(Arrays.toString(arr));
}

方法-2:

String[] arr2 = new String[ARRAY.length + 1];
System.arraycopy(ARRAY, 0, arr2, 0, ARRAY.length);
arr2[arr2.length - 1 ] = d;
System.out.println(Arrays.toString(arr2));

O / P:

[A, B, C, D]

答案 3 :(得分:0)

简单的方法是将值复制到新数组!

static final String[] ARRAY = {"A", "B", "C"};

public static void main(String[] args) {
    String[] EXPECTED_ARRAY = getExpectedArray("D", ARRAY);
    System.out.println(Arrays.toString(EXPECTED_ARRAY));
}

static String[] getExpectedArray(String addValue, String ... strings) {
    String [] returnArray = new String[strings.length + 1];
    returnArray[returnArray.length - 1] = addValue;
    System.arraycopy(strings, 0, returnArray, 0, strings.length);
    return returnArray;
}

使用BeanShell的最小行代码:

static final String[] ARRAY = {"A", "B", "C"};

public static void main(String[] args) throws Exception {
    String stringToAppend = "D";

    Interpreter interpreter = new Interpreter();
    String[] newArrayString = (String[]) interpreter.eval("new String [] {"
            + Arrays.toString(ARRAY).replaceAll("^\\[|\\]$", "\"")
                    .replaceAll(",", "\",\"")
            + ",\"" + stringToAppend + "\"" + "}");
}

答案 4 :(得分:0)

你可以这样试试。

String strs[] = {"A","B","C"};
List<String> tempList = new ArrayList<>(Arrays.asList(strs));
tempList.add("D");
strs = tempList.toArray(new String[tempList.size()]);

如果你想为此做一个方法。

private static String[] appendArray(String[] sts, String s)
{
    List<String> tempList = new ArrayList<>(Arrays.asList(sts));
    tempList.add(s);
    return (tempList.toArray(new String[tempList.size()]));
}

如果您想在一次通话中使用多个字符串。

private static String[] appendArray(String[] sts, String...s)
{
    List<String> tempList = new ArrayList<>(Arrays.asList(sts));
    if (s.length>0) tempList.addAll(Arrays.asList(s));
    return (tempList.toArray(new String[tempList.size()]));
}