日期:2014-05-20  浏览次数:20770 次

集合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()