使用 Arrays.asList() 初始化 List 的最佳方式是什么?

2022-09-01 20:35:08

我使用以下代码。两者在我的应用程序中都工作正常。

案例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?

答案 1

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

返回由指定数组支持的固定大小的列表。(对返回列表的更改“直写”到数组。

Arrays#asList


答案 2

我认为案例2就像创造.您无法更改大小,但可以更改元素。案例 1 允许您同时执行这两项操作。new String[10]

这显示了您可以对案例 2 执行的操作:http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/8u40-b25/java/util/Arrays.java#Arrays.ArrayList