一、为什么用Collections.singletonList:
这个方法主要用于减少内存分配,无需分配额外的内存,可以从SingletonList内部类看得出来,由于只有一个element,因此可以做到内存分配最小化。需注意,singletonList()方法返回的是不可变的集合对象,所以无法使用add等方法,如果使用会报错。
源码:
public static <T> List<T> singletonList(T o) {
return new SingletonList<>(o);
}
二、怎么用Collections.singletonList:
public static List<Object> singletonListTest(Object o){
// 入参可以使任意类型
return Collections.singletonList(o);
}
三、Collections.singletonList和Arrays.toList()的区别:
1.Arrays.asList(strArray)返回值是仍然是一个可变的集合,但是返回值是其内部类,不具有add方法,可以通过set方法进行增加值,默认长度是10
2.Collections.singletonList()返回的是不可变的集合,但是这个长度的集合只有1,可以减少内存空间。调用add,set方法会报错。