【问题标题】:Java quick array listJava快速数组列表
【发布时间】:2011-12-07 17:18:26
【问题描述】:

我有一个非常简单的问题:

如何让这段代码在 Java 上更简单:

ArrayList<String> s = new ArrayList<String>();
s.add("str1");
s.add("str hello");
s.add("str bye");
//...

类似的东西:

ArrayList<String> s = {"a1", "str", "mystr"};

或者那个:

ArrayList<String> s = new ArrayList<String>("a1", "str", "mystr");

或者那个:

ArrayList<String> s = new ArrayList<String>();
s.addAll("a1", "str", "mystr");

或者那个:

ArrayList<String> s = new ArrayList<String>();
s.addAll(new ArrayElements("a1", "str", "mystr"));

我只想要语法提示。谢谢。

【问题讨论】:

标签: java arrays arraylist


【解决方案1】:
List<String> s = Arrays.asList(new String[] {"a1", "str", "mystr"});

【讨论】:

  • @Rob:OP 要求简单,而不是快速
  • List&lt;String&gt; s = Arrays.asList("a1", "str", "mystr"); 更好
【解决方案2】:

怎么样:

ArrayList<String> s = new ArrayList<String>();
Collections.addAll(s, "a1", "str", "mystr");

【讨论】:

    【解决方案3】:

    我会使用Guava 及其精彩的Lists 类:

    List<String> list = Lists.newArrayList("a1", "str", "mystr");
    

    【讨论】:

      【解决方案4】:

      List&lt;String&gt; s = Arrays.asList("a1", "str", "mystr");

      【讨论】:

      • 这将返回一个固定大小的列表,而不是 java.util.ArrayList。因此,当不再需要添加或删除元素时,这很好。
      • 这是真的。 OP 不清楚这是否会成为问题。
      【解决方案5】:

      你可以使用双括号:

      ArrayList<String> s = new ArrayList<String>()
      {{
          add("str1");
          add("str hello");
          add("str bye");
          //...
      }};
      

      【讨论】:

      • 不只是产生深奥的语法,向 OP 解释它是什么以及它是如何工作的不是一个好主意吗?
      • dty,是双括号初始化,在c2.com/cgi/wiki?DoubleBraceInitialization中有详细说明。
      • 您可能不想这样做是有原因的。这实际上在每次运行时都会创建一个新的匿名内部类定义,这可能会对长时间运行的应用程序产生副作用,或者如果您经常执行此 sn-p。通常最好不要使用这种形式的初始化,因为即使您了解其中的含义,您团队中可能会复制您的人也可能不会。有更安全的方法来做到这一点
      【解决方案6】:

      如果您使用的是 Java 9,则可以使用 List.of()

      List<String> s = List.of("str1", "str hello", "str bye");
      

      但这将是一个不可变的列表。如果你需要一个可变的 Arraylist:

      ArrayList<String> s = new ArrayList<>(List.of("str1", "str hello", "str bye"))
      

      【讨论】:

        【解决方案7】:

        在 Java 8 之前或之后你可以写:

        ArrayList<String> s = 
            new ArrayList<>(Arrays.asList("str1", "str hello", "str bye"));
        

        从 Java 8 开始,您可以编写:

        ArrayList<String> s =
            Stream.of("str1", "str hello", "str bye")
                .collect(Collectors.toCollection(ArrayList::new));
        

        使用Eclipse Collections,您可以编写以下内容:

        ArrayList<String> s =
            Lists.mutable.with("str1", "str hello", "str bye")
                .into(new ArrayList<>());
        

        如果你可以使用List 代替ArrayList

        List<String> s = Lists.mutable.with("str1", "str hello", "str bye");
        

        注意:我是 Eclipse Collections 的提交者。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-04-07
          • 1970-01-01
          • 2010-10-31
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2022-12-16
          • 2011-08-27
          相关资源
          最近更新 更多