`

【Java】Collections.EMPTY_LIST和Collections.emptyList()简单使用心得

    博客分类:
  • Java
阅读更多

 

1.背景
在某些情况下,我们经常需要发挥一个空的集合对象,比如说在数据查询时,并不需要发挥一个NULL或是异常,那么就可以返回一个空的集合对象。
JDK提供了两个方式来返回集合对象,那么两者有何区别呢?那就看代码吧!

2.源码解析

 

Java代码   收藏代码
  1. //EMPTY_LIST 是Collections定义的一个静态属性,是一个类变量,可以直接返回使用  
  2.  public static final List EMPTY_LIST = new EmptyList();  
  3.   
  4. //这个是emptyList的代码  
  5.  public static final <T> List<T> emptyList() {  
  6.     return (List<T>) EMPTY_LIST;  
  7.     }  

 



从上面我们可以看出,emptyList不过是对EMPTY_LIST做了一个泛型支持。这点上我们就可以很清晰的了解两者不同的使用场景了!若是不需要泛型的情况,可以直接使用Collections,反之则使用emptyList().

3.使用
对于EMPTY_LIST就不多介绍了,我们可以直接使用Collections.EMPTY_LIST。
对于Collections.emptyList()的使用有点需要注意的地方。
若是定义了一个变量来保存这个空集合的话,那么没有问题。

 

Java代码   收藏代码
  1. List<Person> emptyPersonList = Collections.emptyList(); //编译器会自动转化。  

 

若是在某个场景下需要将空对象进行赋值那么就需要如下写法

    organization.setPersonList(Collections.<Person> emptyList());

Java代码   收藏代码
  1. organization.setPersonList(Collections.<Person> emptyList());   

 


4.BTW 
虽然在源码中存在

Java代码   收藏代码
  1. public int size() {return 0;}  
  2.   
  3.  public Object get(int index) {  
  4.           throw new IndexOutOfBoundsException("Index: "+index);  
  5.  }  

 

但是对于我们无论是 
 for (int i =0 ; i < ...)还是 for (Person p : personList)都不会调用到get(int index)这个方法,可以放心使用!前一种方式我们可以很好理解,因为首先是调用了size().后者foreach的实现原理还需要考究下!

分享到:
评论
1 楼 huanglei_jay 2014-05-07  
         

相关推荐

    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;...

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

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

    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 ...

    jdk1.8.102 java8

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

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

    本文将详细介绍6种初始化Java List集合的方法,并通过代码示例帮助理解每种方法的使用和特点。 1. 常规方式 这是最常见的初始化List的方式,通过创建ArrayList实例并逐个添加元素。自JDK 7以后,可以省略泛型类型的...

    JAVA_API_1.7中文版

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

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

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

    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();`...

    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)**:对于流,可以...

    使用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多线程安全集合

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

    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