Arrays.asList()vs Collections.singletonList()
使用Arrays.asList(某些东西)而不是Collections.singletonList(某些东西)来创build一个包含一个项目的列表是否有优势(或者差别很大)? 后者使得返回的列表也是不可变的。
Collections.singletonList(something)
是不可变的,而Arrays.asList(something)
是一个Array的固定大小的List
表示,其中List和Array被join到堆中。
Arrays.asList(something)
允许Arrays.asList(something)
更改 ,这会反映到List和联合数组中。 它抛出UnsupportedOperationException
添加,删除元素,虽然你可以设置一个特定的索引元素。
由Collections.singletonList(something)
返回的List所做的任何更改都将导致UnsupportedOperationException
。
另外,由Collections.singletonList(something)
返回的List的容量将总是1,而不像Arrays.asList(something)
的容量将是支持数组的大小。
我只是补充说singletonlist不是由一个数组支持,只是对这个项目的引用。 据推测,这将需要更less的内存,可以是显着的,取决于你想创build的列表数量。