【问题标题】: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" };

【问题讨论】:

    标签: java


    【解决方案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]);
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2016-05-11
          • 2013-10-04
          • 2016-12-21
          • 1970-01-01
          • 2013-11-30
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多