与 Collections.singletonList(something) 相比,使用 Arrays.asList(something) 来制作一个列表是否有优势(或有很大的不同)?后者也使返回的列表不可变。
singletonList不受数组的支持,而只是对该项目的引用。据推测,它会占用更少的内存,并且可能很重要,具体取决于您要创建的列表数量。
Arrays.asList 方法返回由指定数组支持的固定大小的列表。该方法返回 ArrayList 的实例,它是扩展 AbstractList 而不是 java.util.ArrayList 的私有嵌套静态类。这个静态类提供了一些方法的实现,例如set、indexOf、forEach、replaceAll 等,但是当我们调用 add 时,它没有自己的实现,而是调用了来自 AbstractList 的方法,它抛出了 java.lang.UnsupportedOperationException。
Collections.singletonList 返回一个仅包含指定对象的不可变列表,并且它也是可序列化的。
对于不可变列表,通常使用 Collections.unmodifiableList ,它返回指定列表的不可修改视图。
不可修改的视图集合是不可修改的集合,也是支持集合的视图。请注意,对支持集合的更改可能仍然是可能的,并且如果发生更改,它们将通过不可修改的视图可见。我们可以在 Java 10 及更高版本中拥有一个真正的不可变列表。
参考
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://javaedge.blog.csdn.net/article/details/124065900
内容来源于网络,如有侵权,请联系作者删除!