可能是重复问题:
如何在Java中连接两个数组?
我已经声明SET1为静态String[],我想声明SET2为SET1 + 几个其他参数。是否可以使用上述定义类似地(即private static String[])静态地声明SET2,如果不行,该怎么做?
private static final String[] SET1 = { "1", "2", "3" };
SET2 = SET1 + { "4", "5", "6" };
可能是重复问题:
如何在Java中连接两个数组?
我已经声明SET1为静态String[],我想声明SET2为SET1 + 几个其他参数。是否可以使用上述定义类似地(即private static String[])静态地声明SET2,如果不行,该怎么做?
private static final String[] SET1 = { "1", "2", "3" };
SET2 = SET1 + { "4", "5", "6" };
请看Commons Util的ArrayUtils.add函数:
static String[] SET2 = ArrayUtils.add(SET1, {"4", "5", "6" });
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");
}
这是一个又大又丑的东西:
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;
}
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]);
}