Collections.singletonList 和 Arrays.asList 的区别

如下示例:

	List<String> list1 = Collections.singletonList("小狗");

	List<String> list2 = Arrays.asList("小狗", "小猫");

可看出两者都可以直接放入元素, 创建并初始化一个 list.

Collections.singletonList

Collections.singletonList 和 Arrays.asList 的区别_第1张图片

  1. 调用Collections.singletonList(T o)方法其实是创建了一个SingletonList 对象,SingletonList 继承了抽象类 AbstractList
  2. SingletonList 中长度不可变,整个集合中只能有一个元素
  3. SingletonList 中唯一的一个元素可以设置为null
  4. SingletonList 中唯一的一个元素是 final 修饰的,一旦被初始化完成后就不可以进行修改,只能读取
  5. SingletonList 中保存元素的是一个对象

Arrays.asList

Collections.singletonList 和 Arrays.asList 的区别_第2张图片

  1. 调用 Arrays.asList(T… a)方法其实是创建了一个 ArrayList 对象,ArrayList 继承了抽象类 AbstractList
  2. ArrayList 长度不可变,允许有多个元素
  3. ArrayList 中的传入的数组参数中允许存在 null
  4. ArrayList 中存储数据是 final 修饰的数组,初始化后,长度就不可以进行修改,可以去遍历、修改 ArrayList 中的元素,但不能去增加、删除
  5. ArrayList 中保存元素的是一个数组
  6. Arrays.asList 中创建的 ArrayList 和我们常用的java.util.ArrayList并不是同一个

你可能感兴趣的:(java,开发语言,学习)