2010-09-20 3 views
2

Можно создать дубликат:
How to concatenate two arrays in Java?Как я конкатенации статические строковые массивы

меня SET1 объявлен как статический String [], и я хотел бы объявить SET2 как ТАБЛИЦЕ1 + несколько других параметры. Можно ли объявить SET2 статически подобным (например, private static String []) для SET1, но используя указанное выше определение, если не как это сделать?

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

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

ответ

3

Посмотрите на Commons Util ArrayUtils.add:

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

Я думаю, нам нужно использовать Object [] и использовать addAll вместо и приведения его обратно в строку [] – user339108

+0

Я надеюсь, что это не клон, когда есть 2 множества конечных аргументов. 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]); 
}