我有一个Java String数组:
public static final String[] FIELDS_NAMES = { "Albert", "Berta", "Carl" };
public static final String[] FIELDS_NUMBERS = { "123", "456", "789" };
并希望从我已有的第三个常量中创建第三个常量。目前我通过重复所有事情来做到这一点:
public static final String[] FIELDS_ALL = {
"Albert", "Berta", "Carl", "123", "456", "789"
};
但我真正想要的是:
public static final String[] FIELDS_ALL = {FIELDS_NAMES, FIELDS_NUMBERS};
知道怎么用Java做到这一点?显然我不想运行任何循环来改变周围的事物......
答案 0 :(得分:2)
连接字符串数组的一种方法:
String[] FIELDS_ALL = ArrayUtils.addAll(FIELDS_NAMES, FIELDS_NAMES);
编辑注意:正如@Malachi所提到的,这使用 Apache Commons Lang Library
编辑不使用任何外部库:
您可以使用此通用方法执行此操作:
String[] join(String[]... arrays)
{
// calculate size of target array
int size = 0;
for (String[] array : arrays)
{
size += array.length;
}
// create list of appropriate size
java.util.List list = new java.util.ArrayList(size);
// add arrays
for (String[] array : arrays)
{
list.addAll(java.util.Arrays.asList(array));
}
// create and return final array
return list.toArray(new String[size]);
}
答案 1 :(得分:1)
尽管使用Apache Commons Lang是其他答案所建议的最简单,但是有一些方法可以使用Java内置语法来完成工作,而无需创建单独的实用方法。
public static final String[] FIELDS_ALL =
new ArrayList<String>() {{
addAll(Arrays.asList(FIELDS_NAMES));
addAll(Arrays.asList(FIELDS_NUMBERS));
}}.toArray(new String[0]);
(如果语法对其他人来说很奇怪:我正在创建一个匿名类,它是ArrayList的子类,并使用初始化程序来调用addAll
来填充ArrayList的内容。)
答案 2 :(得分:0)
String[] concatArray(String[] A, String[] B) {
int aLen = A.length;
int bLen = B.length;
int cLen = aLen+bLen;
String[] C = new T[cLen];
System.arraycopy(A, 0, C, 0, aLen);
System.arraycopy(B, 0, C, aLen, bLen);
return C;
}
答案 3 :(得分:0)
可以使用:
String[] FIELDS_NAMES = { "Albert", "Berta", "Carl" };
String[] FIELDS_NUMBERS = { "123", "456", "789" };
String[] FIELDS_ALL = new String[FIELDS_NAMES.length + FIELDS_NUMBERS.length] ;
System.arraycopy(FIELDS_NAMES, 0, FIELDS_ALL, 0, FIELDS_NAMES.length);
System.arraycopy(FIELDS_NUMBERS, 0, FIELDS_ALL, FIELDS_NAMES.length, FIELDS_NUMBERS.length);
for (int j = 0; j < FIELDS_ALL.length; j++) {
System.out.println(FIELDS_ALL[j]);
}