将String附加到本机Java数组

时间:2014-11-25 04:31:11

标签: java arrays string append native

是否有一种更优雅的方式(最好是在SDK中),它将采用现有的N个String对象数组并追加另一个String,以便数组现在有N + 1个String对象?请参阅下文我是如何做到的。

import java.util.Arrays;

public class StringArrayAppend {

/**
 * @param args
 */
public static void main(String[] args) {
    String[] selectionArgs={"3","2"};
    //Is there a SDK method to Arrays.append(selectionArgs,"1");?


    int newSize=selectionArgs.length+1;
    int indexNewElem=selectionArgs.length;
    String[] selectionArgs2=new String[newSize];
    System.arraycopy(selectionArgs, 0, selectionArgs2, 0, selectionArgs.length);
    selectionArgs2[indexNewElem]="1";
    selectionArgs=selectionArgs2;
    selectionArgs2=null;

    System.out.println("selectionArgs="+Arrays.toString(selectionArgs));


}

}

4 个答案:

答案 0 :(得分:1)

我担心JDK中没有任何内容。

你可以自己使用Commons Lang,或者自己制作一个帮助方法(就像当前代码中的方法一样)。

您可以通过使用Arrays#copyOf(允许副本比原始元素长一个元素)来简化代码。

无论你怎么做,你都会得到一个新阵列。由于数组无法调整大小,因此没有别的办法。

答案 1 :(得分:1)

如果你坚持使用Java Arrays我不知道一种优雅的方式将一个附加到另一个上,除了你做的那样(创建另一个具有正确大小的数组,只需将新元素添加到末尾)数组)。

编辑:我使用Apache Commons Lang Library ArrayUtils.addAll(T[], T...)

找到了一个单行解决方案
String[] both = ArrayUtils.addAll(first, second);

使用ArrayList怎么样? ArrayLists是动态调整大小的,允许您简单地添加元素(使用ArrayList.add(Object o))。

答案 2 :(得分:1)

你可以用三行来完成,但整体效率是一样的:

String[] a = new String[] {"quick", "brown", "fox"};

List<String> s = new ArrayList<String>(Arrays.asList(a));
s.add("jumps");
a = s.toArray(new String[s.size()]);

System.out.println(Arrays.toString(a));

Demo.

但是,当您需要容器的可扩展性时,最好的方法是使用ArrayList<String>

答案 3 :(得分:0)

据我所知,由于没有将数组转换为列表或从列表中转换数组,因此JDK中没有任何内容可以使此操作更容易。如果您不介意Google's Guava library,请使用ObjectArrays.concat()方法。

使用示例代码中的值,它看起来像这样:

String[] selectionArgs = {"3", "2"};
selectionArgs = ObjectArrays.concat(selectionArgs, "1");