如下示例:
List<String> list1 = Collections.singletonList("小狗");
List<String> list2 = Arrays.asList("小狗", "小猫");
可看出两者都可以直接放入元素, 创建并初始化一个 list.
Collections.singletonList
- 调用Collections.singletonList(T o)方法其实是创建了一个SingletonList 对象,SingletonList 继承了抽象类 AbstractList
- SingletonList 中长度不可变,整个集合中只能有一个元素
- SingletonList 中唯一的一个元素可以设置为null
- SingletonList 中唯一的一个元素是 final 修饰的,一旦被初始化完成后就不可以进行修改,只能读取
- SingletonList 中保存元素的是一个对象
Arrays.asList
- 调用 Arrays.asList(T… a)方法其实是创建了一个 ArrayList 对象,ArrayList 继承了抽象类 AbstractList
- ArrayList 长度不可变,允许有多个元素
- ArrayList 中的传入的数组参数中允许存在 null
- ArrayList 中存储数据是 final 修饰的数组,初始化后,长度就不可以进行修改,可以去遍历、修改 ArrayList 中的元素,但不能去增加、删除
- ArrayList 中保存元素的是一个数组
- Arrays.asList 中创建的 ArrayList 和我们常用的java.util.ArrayList并不是同一个