Java Collections.emptyList方法的使用及注意事項
一、emptyList()
- 作用:返回一個空的List(使用前提是不會再對返回的list進行增加和刪除操作);
- 好處:
1. new ArrayList()創建時有初始大小,佔用內存,emptyList()不用創建一個新的對象,可以減少內存開銷;
2. 方法返回一個emptyList()時,不會報空指針異常,如果直接返回Null,沒有進行非空判斷就會報空指針異常; - 注意:此List與常用的List不同,它是Collections類裏的靜態內部類,在繼承AbstractList後並沒有實現add()、remove()等方法,所以返回的List不能進行增加和刪除元素操作。
- 示例:
@Test
public void test1() {
String str = "";
List<String> list = getList(str);
System.out.println(list.size());
}
private static List<String> getList(String str) {
if (StringUtils.isBlank(str)) {
// 使用時不會報空指針
return Collections.emptyList();
// 使用null報空指針異常
// return null;
}
List<String> list = new ArrayList<String>();
list.add(str);
return list;
}
- 增刪操作:
@Test
public void test2() {
String str = "abc";
List<String> list = Collections.emptyList();
list.add(str);
System.out.println(list.size());
}
- 結果:
如果需要對collections.emptyList()進行增刪操作的話,就需要將collections.emptyList()轉換成ArrayList()進行操作。
- 示例:
@Test
public void test2() {
String str = "abc";
List<String> list = Collections.emptyList();
List<String> resultList = new ArrayList<>(list);
resultList.add(str);
System.out.println(resultList.size());
System.out.println(resultList);
}
- 結果: