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中保存一个数组对象