`

(转) Java Collections.EMPTY_LIST 和 Collections.emptyList()的区别

    博客分类:
  • java
 
阅读更多

Collections.EMPTY_LIST返回的是一个空的List。为什么需要空的List呢?有时候我们在函数中需要返回一个List,但是这个List是空的,如果我们直接返回null的话,调用者还需要进行null的判断,所以一般建议返回一个空的List。(编者注:比如,用到list.size(),这个时候会忘记也很麻烦,再判断是否为空。不像循环,肯定会判断是否为空 。所以不要return null,return Collections.EMPTY_LIST这个比较好EMPTY_LIST的size为0)Collections.EMPTY_LIST返回的这个空的List是不能进行添加元素这类操作的。这时候你有可能会说,我直接返回一个new ArrayList()呗,但是new ArrayList()在初始化时会占用一定的资源,所以在这种场景下,还是建议返回Collections.EMPTY_LIST。

Collections. emptyList()返回的也是一个空的List,它与Collections.EMPTY_LIST的唯一区别是,Collections. emptyList()支持泛型,所以在需要泛型的时候,可以使用Collections. emptyList()。

Collections.EMPTY_MAP和Collections.EMPTY_SET同理。

Collections.EMPTY_LIST的实现代码:

 

[java] view plain copy
 
  1. /** 
  2.  * The empty list (immutable).  This list is serializable. 
  3.  * 
  4.  * @see #emptyList() 
  5.  */  
  6. @SuppressWarnings("unchecked")  
  7. public static final List EMPTY_LIST = new EmptyList<>();  

Collections. emptyList()的实现代码:

 

[java] view plain copy
 
  1. /** 
  2.  * Returns the empty list (immutable).  This list is serializable. 
  3.  * 
  4.  * <p>This example illustrates the type-safe way to obtain an empty list: 
  5.  * <pre> 
  6.  *     List<String> s = Collections.emptyList(); 
  7.  * </pre> 
  8.  * Implementation note:  Implementations of this method need not 
  9.  * create a separate <tt>List</tt> object for each call.   Using this 
  10.  * method is likely to have comparable cost to using the like-named 
  11.  * field.  (Unlike this method, the field does not provide type safety.) 
  12.  * 
  13.  * @see #EMPTY_LIST 
  14.  * @since 1.5 
  15.  */  
  16. @SuppressWarnings("unchecked")  
  17. public static final <T> List<T> emptyList() {  
  18.     return (List<T>) EMPTY_LIST;  
  19. }  

测试代码演示:

 

[java] view plain copy
 
  1. import java.util.Collections;  
  2. import java.util.List;  
  3.   
  4. public class CollectionsTest {  
  5.   
  6.     public static void main(String[] args) {  
  7.         List list1 = Collections.EMPTY_LIST;  
  8.         System.out.println(list1.size());  
  9.         try {  
  10.             list1.add(1);  
  11.         } catch (Exception e) {  
  12.             e.printStackTrace();  
  13.         }  
  14.           
  15.         List<Integer> list2 = Collections.<Integer>emptyList();  
  16.         System.out.println(list2.size());  
  17.         try {  
  18.             list2.add(1);  
  19.         } catch (Exception e) {  
  20.             e.printStackTrace();  
  21.         }  
  22.     }  
  23. }  

测试输出:


 

 

 

REFS:http://blog.csdn.net/liyuming0000/article/details/49474659

分享到:
评论

相关推荐

    javaclooections类.docx

    Java Collections API 是 Java 核心库中的重要组成部分,它提供了丰富的功能来操作和管理各种集合对象,如 List、Set、Map 等。这个API包括许多实用工具类和方法,帮助开发者更高效地处理数据结构。以下是关于Java ...

    Java_集合框架_课件

    `Collections`类中提供了一些枚举常量,如`Collections.EMPTY_LIST`、`Collections.EMPTY_MAP`和`Collections.EMPTY_SET`,用于表示空的集合。 6. **集合工具类**: `Collections`类提供了许多静态方法,用于对...

    吐血推荐17个提升开发效率的“轮子”.doc

    4. 返回空集合:Collections.emptyList() 方法可以返回空集合。 例如: private List fun(List list) { if (list == null || list.size() == 0) { return Collections.emptyList(); } //业务处理 return list;...

    EurekaLog_7.5.0.0_Enterprise

    9)....Added: EMemLeaks._ReserveOutOfMemory to control reserve size of out of memory errors (default is 50 Mb) 10)..Added: "MinLeaksLimitObjs" option (EMemLeaks unit) 11)..Added: Fatal memory problem ...

    559.557.JAVA基础教程_集合-Collections工具类常用方法的测试(559).rar

    最后,Collections工具类还包含一些实用的静态工厂方法,如`emptyList()`、`emptyMap()`和`singletonMap(K key, V value)`,它们分别用于创建空列表、空映射以及只有一个键值对的映射。 总结起来,Collections工具...

    jdk1.8.102 java8

    7. **新的集合工厂方法**:在`Collections`和`Arrays`类中添加了新的工厂方法,用于创建不可变集合和数组,如`Collections.emptyList()`、`Arrays.asList()`等。 8. **改进的类型推断**:Java 8增强了类型推断能力...

    6种方法初始化JAVA中的list集合

    List&lt;String&gt; emptyList = Collections.emptyList(); ``` 4. 匿名内部类 利用匿名内部类可以一次性初始化List,这种方式在代码中看起来比较简洁。 ```java List&lt;String&gt; names = new ArrayList() {{ add("Tom"); ...

    JAVA_API_1.7中文版

    8. **集合工厂方法**:Java 1.7对集合框架进行了优化,添加了工厂方法,如`Collections.emptyList()`, `Collections.singleton()`, `Map.of()`, 等,方便创建不可变的集合实例。 9. **元注解的可重复性**:从Java ...

    leon9dragon#all_blogs#061.JAVA集合框架_Arrays类和Collections类1

    1.1. Arrays 类的常用方法 1.2.1. emptyList()/emptyMap()/emptySet() 方法 1.2.7. synchroniz

    java api1.6、1.7

    1. **多版本选择语法**:允许导入特定版本的库,如`&lt;import static java.util.Collections.emptyList;&gt;`, 提高了代码的可读性。 2. **钻石操作符**:对于匿名类型实例化,如`List&lt;String&gt; list = new ArrayList();`...

    Java空集合使用场景与填坑记录

    创建空集合有多种方法,本文将介绍两种常见的方法:new ArrayList()和Collections.emptyList()。 二、 Java判断集合是否为空 Java判断集合是否为空有多种方法,例如isEmpty()、size()==0、list==null等。这些方法...

    Andorid 获取前台应用的历史信息

    return Collections.emptyList(); } } ``` 在这个`ActivityManagerDemo`项目中,可能包含了实现上述功能的示例代码,包括如何请求权限、初始化UsageStatsManager、查询并处理使用统计信息等。通过学习和理解这个...

    Python数据结构封装类源码

    在Python编程中,数据结构是组织、存储和处理大量数据的关键工具。为了高效地操作数据,程序员经常需要自定义类来封装常见的数据结构,如列表、队列、栈、堆、链表、图等。本篇文章将深入探讨Python中如何通过类封装...

    JAVA_JDK_1.7

    在`Collections`和`Arrays`类中添加了一些静态工厂方法,如`Collections.emptyList()`, `Collections.emptyMap()`等,可以更方便地创建不可变的集合实例。 11. **改进的异常处理**: 允许一个`catch`子句捕获多个...

    构建JavaAPI的艺术:Do's_and_Don'ts_英文.pdf

    同样,对于集合(List、Set、Map、Iterator)和其他容器,可以使用`Collections.emptyList()`, `Collections.emptySet()`, `Collections.emptyMap()`等静态工厂方法来返回空实例。 3. **流(Stream)**:对于流,可以...

    Java多线程安全集合

    例如`Collections.unmodifiable*`方法创建的集合和`java.util.Collections`类中的`emptyList()`、`emptySet()`等。这些集合一旦创建就不能修改,因此天然线程安全。 示例代码: ```java import java.util.*; ...

    使用sharding-jdbc实现读写分离和分库分表.zip

    Collections.emptyList()); } } ``` 最后,你可以像操作普通数据库一样,使用SpringDataJPA或MyBatis等ORM框架进行数据操作。Sharding-JDBC会在背后自动处理分库分表和读写分离。 通过以上步骤,你就成功地在...

    java jdk1.8正版英文文档

    6. **新的集合工厂方法**:List、Set和Map接口新增了一些静态工厂方法,可以直接创建不可变的集合实例,如Collections.emptyList()、Collections.emptySet()、Collections.emptyMap()。 7. **Optional类**:...

    JAVA 1.8 API官方文档英文版+1.7中文版+1.6中文版

    - 集合工厂方法:如`Collections.emptyList()`、`Collections.emptyMap()`等,方便创建空集合。 3. Java 1.6 API中文版: - G1垃圾收集器:一种并行和并发的垃圾回收器,目标是减少垃圾回收的暂停时间。 - 枚举...

Global site tag (gtag.js) - Google Analytics