2013-05-13 116 views
1

的我有一个Java String数组:的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

可能重复[this](http://stackoverflow.com/questions/80476/how-to-concatenate-two-arrays-in-java)和[that](http://stackoverflow.com/questions/4697255 /结合,二,整数数组)。你可以看看那里的答案。 – gkalpak 2013-05-13 09:10:09

回答

2

一种方式来连接字符串数组:

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

编辑注:如@Malachi已经提到,这将使用阿帕奇百科全书郎图书馆

编辑无需使用任何外部库:

你可以使用G功能eneric方法可以这样做:

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]); 
} 
+0

+1 - 这是Apache Commons Lang Library的一部分(http://commons.apache.org/proper/commons-lang/%5D) – Malachi 2013-05-13 09:02:03

+0

Java是否提供了一些本地的东西而不需要外部库? – RalfB 2013-05-13 09:24:07

+0

我已经包含代码来执行它,而不使用任何外部库。一探究竟。 – codeMan 2013-05-13 09:29:31

0

使用system.arraycopy

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; 
} 
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]); 
     } 
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的内容)