【问题标题】:Construct an ArrayList of strings in Java as simple as one can in Javascript在 Java 中构造一个字符串的 ArrayList,就像在 Javascript 中一样简单
【发布时间】:2023-03-09 15:40:01
【问题描述】:

JavaScript 中,我可以构建一个字符串值数组,例如:

var stuff = new Array('foo','bar','baz','boz','gaz','goz');

甚至更简单

var stuff = 'foo,bar,baz,boz,gaz,goz'.split(',');

Java 中,它似乎过于冗长和复杂......还有比这更简单的方法吗?

ArrayList<String> stuff = new ArrayList<String>();
stuff.add("foo");
stuff.add("bar");
stuff.add("baz");
stuff.add("boz");
stuff.add("gaz");
stuff.add("goz");

在我的实际场景中,我有 30-40 个项目进入 ArrayList...我认为必须有一个更简单的方法!我忽略的明显一点是什么?

【问题讨论】:

标签: java syntax constructor arraylist


【解决方案1】:

List&lt;String&gt; strings = Arrays.asList(new String[] {"foo", "bar", "baz"});List&lt;String&gt; strings = Arrays.asList("foo,bar,baz".split(","));

【讨论】:

  • Arrays.asList 接受可变参数。所以它可以被称为List&lt;String&gt; strings = Arrays.asList("foo", "bar", "baz")。更好的是,为Arrays.asList 执行import static,然后它变得更加简单:List&lt;String&gt; strings = asList("foo", "bar", "baz")
  • @abhin4v:最后一个是我用的;它非常有效地减少了噪音,而且它也在基础库中。
  • 对于实际的java.util.ArrayList,您需要将其包装在new java.util.ArrayList( ... )`中。
  • 汤姆说了什么; asList 返回一个 Arrays.ArrayList,它是一个数组的不可变包装器。
  • 实际上它并不是完全不可变的,你不能添加或删除它,但你可以改变元素(就像在普通数组中一样)。
【解决方案2】:

Arrays.asList() 是获取 List 实现的好方法,尽管它在技术上不是 ArrayList 实现,而是一种内部类型。

如果你真的需要它是一个 ArrayList,你可以编写一个快速实用的方法:

public static List<String> create(String... items) {
    List<String> list = new ArrayList<String>(items.length);
    for (String item : items) {
        list.add(item);
    }

    return list;
}

【讨论】:

  • 我应该补充一点,splix 有一个很好的解决方案,你可能不关心实际的实现,但你必须将变量声明从 'ArrayList stuff' 更改为 'List东西'
【解决方案3】:

如果您在编译时将 30-40 个项目塞入一个列表,这可能是更严重的疾病的症状。这在很大程度上取决于您正在实施的内容。如果你真的想要,你仍然可以使用split。然后只需批量插入到您的列表中。

【讨论】:

    【解决方案4】:

    需要注意的是,我自己只是在学习 Java 的集合,以下为我编译并运行:

    import java.util.*;
    class ArrayListStrings {
        public static void main(String[] args) {
            String[] stuffArray = {"foo","bar","baz","boz","gaz","goz"};
            ArrayList<String> stuff = new ArrayList<String>();
            stuff.addAll(Arrays.asList(stuffArray));
            for (int i = 0; i < stuff.toArray().length; i++)
                System.out.println(stuff.toArray()[i]);   
        }
    }
    

    输出是:


    酒吧
    巴兹
    博斯
    天然气
    哥们

    【讨论】:

      【解决方案5】:

      如何使用http://code.google.com/p/guava-libraries/ 编写以下代码

      import static com.google.common.collect.Lists.*;
      
      List<String> stuff = newArrayList("foo","bar","baz","boz","gaz","goz");
      

      【讨论】:

        猜你喜欢
        • 2018-01-10
        • 1970-01-01
        • 1970-01-01
        • 2019-12-31
        • 2022-04-07
        • 1970-01-01
        • 2011-02-10
        • 2021-12-03
        • 2022-08-15
        相关资源
        最近更新 更多