2013-12-12 115 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) :'返回由指定数组支持的固定大小列表。 (更改返回列表“直通”到数组。)'。所以它不是不可改变的。 –

+3

@Arnaud Denoyelle,尝试添加或删除列表中的元素并亲自查看:)您可以更改现有元素,但不添加新元素。 – Lital

+0

'java.lang.UnsupportedOperationException'你说得对。为你+1。 –

相关问题