2013-12-12 2 views
20

Я использую этот ниже код. Оба отлично работают в моем приложении.Каков наилучший способ использования 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?

Подробнее: http://java91.blogspot.in/2017/01/what-is-best-way-of-using-arraysaslist.html

+5

Проверьте это: http://stackoverflow.com/questions/16748030/arrays-aslistarray-in-java –

ответ

39

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

Возвращает фиксированного размера список из подкрепленную указанного массива. (Изменения в возвращаемом списке "писать через" в массив.)

Arrays#asList

+2

Javadoc говорит (для Arrays.asList) : 'Возвращает список фиксированного размера, поддерживаемый указанным массивом. (Изменяется на возвращаемый список «write through» в массив.) '. Поэтому это не является неизменным. –

+3

@Arnaud Denoyelle, попробуйте добавить или удалить элемент из списка и увидеть сами :) вы можете изменить существующий элемент, но не добавлять новые. – Lital

+0

'java.lang.UnsupportedOperationException' Вы правы. +1 для вас. –

Смежные вопросы