1. 程式人生 > >Java之Collections.emptyList()、emptySet()、emptyMap()的作用和好處以及要註意的地方

Java之Collections.emptyList()、emptySet()、emptyMap()的作用和好處以及要註意的地方

內存 col 重復 代碼 初始 new list com empty

轉自https://www.cnblogs.com/qiumingcheng/p/7126281.html

先說明一下好處有哪些:
1,如果你想 new 一個空的 List ,而這個 List 以後也不會再添加元素,那麽就用 Collections.emptyList() 好了。
new ArrayList() 或者 new LinkedList() 在創建的時候有會有初始大小,多少會占用一內存。
每次使用都new 一個空的list集合,浪費就積少成多,浪費就嚴重啦,就不好啦
2,為了編碼的方便。
比如說一個方法返回類型是List,當沒有任何結果的時候,返回null,有結果的時候,返回list集合列表。
那樣的話,調用這個方法的地方,就需要進行null判斷。使用emptyList這樣的方法,可以方便方法調用者。返回的就不會是null,省去重復代碼。

註意的地方:
這個空的集合是不能調用.add(),添加元素的。因為直接報異常。因為源碼就是這麽寫的:直接拋異常。

哦,Collections裏面沒這麽寫,但是EmptyList繼承了AbstractList這個抽象類,裏面簡單實現了部分集合框架的方法。
這裏面的add方法最後調用的方法體,就是直接拋異常。
throw new UnsupportedOperationException();
這麽解釋add報異常就對啦。

Java之Collections.emptyList()、emptySet()、emptyMap()的作用和好處以及要註意的地方