如何连接静态字符串数组[重复]
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]);
【讨论】:
以上是关于如何连接静态字符串数组[重复]的主要内容,如果未能解决你的问题,请参考以下文章