如何连接静态字符串数组[重复]

Posted

技术标签:

【中文标题】如何连接静态字符串数组[重复]【英文标题】:How do I concatenate static string arrays [duplicate] 【发布时间】:2011-04-14 14:39:18 【问题描述】:

可能重复:How to concatenate two arrays in Java?

我已将 SET1 声明为静态 String[],我想将 SET2 声明为 SET1 + 一些其他参数。是否可以将 SET2 声明为与 SET1 静态相似(即私有静态字符串 [])但使用上述定义,如果不是如何执行此操作?

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

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

【问题讨论】:

【参考方案1】:

看Commons UtilArrayUtils.add:

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

【讨论】:

我想我们需要使用 Object[] 并改用 addAll 并将其转换回 String[] 我希望当有 2 组有限参数时它不会克隆。 ArrayUtils.addAll(["a", "b", "c"], ["1", "2", "3"]) = ["a", "b", "c", "1", “2”,“3”]。在这里克隆似乎是多余的。【参考方案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");

或者使用某种 Collection 实用程序库。

【讨论】:

【参考方案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;
 

【讨论】:

【参考方案4】:
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]);

【讨论】:

以上是关于如何连接静态字符串数组[重复]的主要内容,如果未能解决你的问题,请参考以下文章

在循环中连接 Java 数组 [重复]

[转载]C#如何清除字符串数组中的重复项

如何将带有数组的字符串转换为数组[重复]

如何使用代码初始化静态成员字符数组

如何在python中将数组字符串转换为数组[重复]

如何在java中将字符串数组转换为int数组[重复]