Collections.singletonList和Arrays.asList的区别

Collections.singletonList : 长度为1

1. 调用Collections.singletonList(T o)方法其实是创建了一个SingletonList对象,SingletonList继承了抽象类AbstractList

2. SingletonList最大的特点是整个集合中只能有一个元素,不能调用add方法

3. SingletonList中唯一的一个元素可以设置为null

4. 由于SingletonList中唯一的一个元素是final类型的,所以一旦被初始化完成后就不可以进行修改,只能通过各种不同的方式来进行读取这个唯一的元素

Arrays.asList:长度不可变

1. 调用 Arrays.asList(T… a)方法其实是创建了一个 ArrayList 对象,ArrayList 继承了抽象类 AbstractList

2. ArrayList 最大的特点是整个集合允许有多个元素存入数组中,但是一旦初始化后,数组的长度就不可以再进行任何的更改,但是数组中的元素可以修改

3. ArrayList 中的传入的数组参数中允许存在null,但是不允许只有一个null

4. 由于 ArrayList 中存储数组是final类型的,所以一旦被初始化完成后长度就不可以进行修改,所以我们可以去遍历、修改 ArrayList 中的元素但不能去增加、删除

Collections.singletonList和Arrays.asList的区别

1. Collections.singletonList 和 Arrays.asList 都是长度不可变的集合,Collections.singletonList 长度为1,元素初始化完成就不可修改, Arrays.asList 长度不可变,元素初始化完成还可以进行修改

2. Collections.singletonList 中的唯一一个元素可以是null,但是如果 Arrays.asList 只存入一个元素的话,那就一定不允许为null,否则的话会抛出 NullPointerException 异常

3. Arrays.asList 中创建的 ArrayList 和我们常用的java.util.ArrayList并不是同一个,所以不要以为 java.util.ArrayList 中可以使用的方法在 Arrays.asList 中也都可以使用,否则的话分分钟教你重新做人

4. Collections.singletonList 中保存元素的是一个对象, Arrays.asList 中保存元素的是一个数组,在这一点上,它俩的差别还是很大的,当然,如果你喜欢,也可以在 Collections.singletonList中保存一个数组对象

你可能感兴趣的:(Collections.singletonList和Arrays.asList的区别)