【问题标题】:What is the best way of using Arrays.asList() to initialize a List [duplicate]使用 Arrays.asList() 初始化列表的最佳方法是什么[重复]
【发布时间】:2013-12-30 14:10:40
【问题描述】:

我使用下面的代码。两者都在我的应用程序中运行良好。

案例 1。

List<String> coreModules =
    new ArrayList<String>(Arrays.asList(
        "TOOLBAR_TO_DO_LIST",
        "TOOLBAR_PROPERTY",
        "TOOLBAR_PEOPLE",
        "TOOLBAR_INSURANCE",
        "TOOLBAR_BATCH",
        "TOOLBAR_INFORMATION_REFERENCE",
        "TOOLBAR_LR_PROPERTY",
        "TOOLBAR_CASE_FOLDER",
        "TOOLBAR_INSPECTION_RESULT",
        "TOOLBAR_MY_OFFICE"));

案例 2。

List<String> coreModules =
    Arrays.asList(
        "TOOLBAR_TO_DO_LIST",
        "TOOLBAR_PROPERTY",
        "TOOLBAR_PEOPLE",
        "TOOLBAR_INSURANCE",
        "TOOLBAR_BATCH",
        "TOOLBAR_INFORMATION_REFERENCE",
        "TOOLBAR_LR_PROPERTY",
        "TOOLBAR_CASE_FOLDER",
        "TOOLBAR_INSPECTION_RESULT",
        "TOOLBAR_MY_OFFICE");

但我有一些问题:

  1. 在性能方面哪个更好?
  2. 在哪种情况下更喜欢案例 2?

【问题讨论】:

标签: java arrays list collections arraylist


【解决方案1】:

案例 2 在性能方面更好,但是:它返回一个大小不可变的列表。这意味着您不能向其中添加/删除元素:

返回一个由指定数组支持的固定大小列表。 (将返回的列表“写入”到数组的更改。)

Arrays#asList

【讨论】:

  • Javadoc 说(对于 Arrays.asList):Returns a fixed-size list backed by the specified array. (Changes to the returned list "write through" to the array.)。所以它不是一成不变的。
  • @Arnaud Denoyelle,尝试从列表中添加或删除一个元素,然后自己看看:) 您可以更改现有元素,但不能添加新元素。
  • 不是完全不变的。它通过修改底层数组中的元素来支持set(int index, E element)
  • 我没有说元素是不可变的......只是列表本身。您不能执行任何更改列表大小的操作。显然,它无法控制其底层元素的变化。你可以不使用 set(int index, E element) 改变一个元素,只需要改变它的引用。
  • @Lital 列表是不可变的当且仅当您不能添加/删除/ change 元素。在这种情况下,您可以使用set 方法更改元素,因此该列表不是不可变的。不可变列表的例子就是那个,你可以通过Collections.unmodifiableList
【解决方案2】:

我认为案例 2 就像创建 new String[10]。您无法更改大小,但可以更改元素。案例 1 允许您两者都做。

这显示了您可以使用案例 2 做什么:http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/8u40-b25/java/util/Arrays.java#Arrays.ArrayList

【讨论】:

    猜你喜欢
    • 2010-09-17
    • 2012-05-30
    • 1970-01-01
    • 1970-01-01
    • 2012-02-08
    • 2012-01-28
    • 1970-01-01
    • 2010-10-13
    • 1970-01-01
    相关资源
    最近更新 更多