Java String数组超出现有的String数组

Java String array out of existing String array

我有一个Java字符串数组:

1
2
public static final String[] FIELDS_NAMES = {"Albert","Berta","Carl" };
public static final String[] FIELDS_NUMBERS = {"123","456","789" };

我想从我已有的常数中创建第三个常数。目前,我通过重复所有的事情来做到这一点:

1
2
3
public static final String[] FIELDS_ALL = {
   "Albert","Berta","Carl","123","456","789"
};

但我真正想要的是:

1
public static final String[] FIELDS_ALL = {FIELDS_NAMES, FIELDS_NUMBERS};

你知道如何在Java中做到这一点吗?显然,我不想运行任何循环来改变周围的事情…


连接字符串数组的一种方法:

1
String[] FIELDS_ALL = ArrayUtils.addAll(FIELDS_NAMES, FIELDS_NAMES);

编辑说明:正如@malachi提到的,这使用了ApacheCommonsLang库

不使用任何外部libs进行编辑:

您可以使用此通用方法来执行此操作:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
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]);
}


尽管使用Apache Cuxon Lang-Read是最简单的方法,但是使用Java内置语法有一些方法,这类工作不需要创建单独的实用方法。

1
2
3
4
5
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的内容。)


可以使用:

1
2
3
4
5
6
7
8
9
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]);
        }


使用system.arraycopy:

1
2
3
4
5
6
7
8
9
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;
}