it-swarm.com.ru

Каков наилучший способ использования Arrays.asList () для инициализации списка

Я использую этот код ниже. Оба отлично работают в моем приложении.

Случай 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?
23
Sitansu

Случай 2 лучше с точки зрения производительности, НО: он возвращает список с неизменным размером. Это означает, что вы не можете добавлять/удалять элементы из него:

Возвращает список fixed-size, поддерживаемый указанным массивом. (Изменения в возвращенном списке "сквозная запись" в массив.)

Arrays#asList

41
Lital Kolog

Я думаю, что случай 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

0
zek_w