【问题标题】:Java List of ArrayList initializingArrayList 初始化的Java列表
【发布时间】:2016-11-18 15:46:43
【问题描述】:

我写了以下代码

List<List<String>> vectors = new ArrayList<List<String>>();
    for(int l = 0;l<10;l++){
        List<String> v = new ArrayList<String>();
        vectors.add(v);
    }

它工作得很好,但这是初始化列表的好方法吗?

注意:我真的很想知道为什么有些人反对我?

【问题讨论】:

  • 答案是:
  • 是的,除了你的变量名不是最佳的。为什么叫它vectors 而不是listsl 也是一个糟糕的变量名,因为它看起来太像数字 1。此外,如果您使用的是 Java 7 或更高版本,则可以在 = 的右侧使用 &lt;&gt;,而不是重复类型参数。
  • @Jesper 这些名字是强制性的,我使用的是 java 6
  • @Rifai_deve Java 6 现在已经过时了,Java 9 计划在明年 3 月发布。有什么理由不能使用较新的版本?
  • @Boann 我正在处理一个已经存在的旧代码,不幸的是这不是我升级的决定

标签: java list arraylist


【解决方案1】:

或者另一种方式..

    List<List<String>> vectors = new ArrayList<List<String>>();
    for(int l = 0;l<10;l++){           
        vectors.add(new ArrayList<String>());
    }

除了使用无名对象外,与 urs 没有太大区别! :)

【讨论】:

    【解决方案2】:

    你可以试试这个方法:

    List<List<String>> lists = new ArrayList<List<String>>() {
           {
                for (int i = 0; i < 10; i++) {
                    add(new ArrayList<>());
                }
           }
     };
    

    但总的来说没有区别。

    【讨论】:

    • 对我来说更清楚,因为初始化与声明密不可分
    • 这是双括号初始化技巧。您正在使用实例初始化程序块创建 ArrayList 的匿名子类。我不喜欢技巧,尤其是这个技巧,因为它并没有使它更清晰,而且您正在创建一个不必要的额外类(它会生成一个类文件,并且该类必须由 JVM 加载 -效率不高)。
    猜你喜欢
    • 2018-04-28
    • 2011-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-15
    • 1970-01-01
    • 2015-06-27
    相关资源
    最近更新 更多