集合Collections使用的问题
Collections字段EMPTY_SET、EMPTY_LIST和EMPTY_MAP分别起到了什么作用呢?我用以下代码:
Java code
List<String> list = Collections.EMPTY_LIST;
list.add("aa");
System.err.println(list.size());
会报
Exception in thread "main"
java.lang.UnsupportedOperationException的异常,也就是说List为一个空的列表,但定义了之后有不能使用,那请问各位大神List<String> list = Collections.EMPTY_LIST;这句话定义的列表到底起了什么作用呢?或者在哪些地方能用到?最好举个例子哈!在这里先谢谢大家啦!
------解决方案--------------------有些方法返回list,map或者set,同时这些方法要求永不返回null
譬如有些条件一判断就知道要返回一个空集合,就不得不new一个,然后返回。就可以用这里的这个常量
------解决方案--------------------它返回的是一个不可变的List。没有办法add。
使用场影,比如当一个查询结果集为空,而不想返回null时,这时可以用Collections.EMPTY_LIST来返回一个空集合。
如果楼主平时用不到的话,那就不要用好了,不用太纠结这个。
------解决方案--------------------看看 Null Object模式
------解决方案--------------------EMPTY_LIST 返回的list是不可变的(Immutable)
所以不能用ADD
------解决方案--------------------EMPTY_SET
public static final Set EMPTY_SET空的 set(不可变的)。此 set 是可序列化的。
另请参见:
emptySet()
--------------------------------------------
EMPTY_LIST
public static final List EMPTY_LIST空的列表(不可变的)。此列表是可序列化的。
另请参见:
emptyList()
--------------------------------------------
EMPTY_MAP
public static final Map EMPTY_MAP空的映射(不可变的)。此映射是可序列化的。
从以下版本开始:
1.3
另请参见:
emptyMap()