如何连接静态字符串数组

3

可能是重复问题:
如何在Java中连接两个数组?

我已经声明SET1为静态String[],我想声明SET2为SET1 + 几个其他参数。是否可以使用上述定义类似地(即private static String[])静态地声明SET2,如果不行,该怎么做?

private static final String[] SET1 = { "1", "2", "3" };

SET2 = SET1 + { "4", "5", "6" };
4个回答

3

请看Commons Util的ArrayUtils.add函数:

static String[] SET2 = ArrayUtils.add(SET1, {"4", "5", "6" });

我猜我们需要使用Object[],然后使用addAll方法,并将其强制转换回String[]。 - user339108
希望在有两组有限参数集时不会进行克隆。ArrayUtils.addAll(["a","b","c"],["1","2","3" ])= ["a","b","c","1","2","3"]。在这里进行克隆似乎是多余的。 - user339108

2
也许在这种情况下,列表更容易使用,因为数组的长度是固定的(本质上)。如果您想静态实例化它,可以像这样做。
private static final List<String> SET1 = new ArrayList<String>();
private static final List<String> SET2 = new ArrayList<String>();
static {
    SET1.add("1");
    SET1.add("2");
    SET2.addAll(SET1);
    SET2.add("3");
}

或者使用某种类型的集合工具库。

0

这是一个又大又丑的东西:

private static final String[] SET1 = { "1", "2", "3" };
private static final String[] SET2 = concat(
    String.class, SET1, new String[]{"4", "5", "6"});

@SuppressWarnings("unchecked")
static <T> T[] concat(Class<T> clazz, T[] A, T[] B) {
    T[] C= (T[]) Array.newInstance(clazz, A.length+B.length);
    System.arraycopy(A, 0, C, 0, A.length);
    System.arraycopy(B, 0, C, A.length, B.length);
    return C;
 }

0
private static final String[] SET1 = { "1", "2", "3" };
private static final String[] SET2;

static
{
    List<String> set2 = new ArrayList<String>(Arrays.asList(SET1));
    set2.addAll(Arrays.asList("3", "4", "5"));
    SET2 = set2.toArray(new String[0]);
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接