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的列表数量。