Collection工具类中的 emptyMap() 、emptySet() 、emptySet()

Collections主要封装了对collection进行操作的静态方法,其中三个方法是 emptyMap() 、emptySet() 、emptySet(),主要是返回空的,但是不可变的Map,Set、List。

 public static final <T> List<T> emptyList() {
     return (List<T>) EMPTY_LIST;
 }
 public static final <K,V> Map<K,V> emptyMap() {
     return (Map<K,V>) EMPTY_MAP;
 }
 public static final <T> Set<T> emptySet() {
     return (Set<T>) EMPTY_SET;
 }

 使用Collections.emptyXXX() 的好处

  1.可以是代码的可读性变得更好,避免产生空指针异常

public Map query(Integer uid){  
}

  例如 有上面的查询方法,如果该方法经过执行后,没有查询出任何数据,我们可以直接返回Collections.emptyMap(),这样一下子就可以知道查询结果为空,而且可以避免产生NullPointerException;另外,我公司使用了sonar进行代码质量检查,如果直接new 一个空Map 就会认为是 阻断性 错误,new产生的Map没有被使用。这个时候,就可以使用该方法了。

      2.可以提高某些场景的性能和效率

  该方法返回的是一个static final的静态内部类Map、Set、List,这些内部类继承自AbstractMap、AbstractSet、AbstractList,重写了部分方法,从而保证了在多次调用Collections.emptyXXX()方法的时候,返回的都是同一个实例,将不需要每次都创建一个新的实例,分配新的空间。

  对于Collections.emptyXXX()方法产生的集合,不能被更改,否则会抛异常:

复制代码
import java.util.*;

public class CollectionsDemo {
   public static void main(String args[]) {
      // create an empty set    
      Set emptyset = Collections.emptySet();
      
      System.out.println("Created empty immutable set: "+emptyset);  
      
      // try to add elements
      emptyset.add("Adding");
   }    
}
复制代码

让我们来编译和运行上面的程序,这将产生以下结果。该组是不可变的,这么添加元素将抛出异常。

Created empty immutable set: []
Exception in thread "main" java.lang.UnsupportedOperationException

抄袭自博文:

  1.http://thecodesample.com/?p=80

  2.http://www.coderanch.com/t/536728/java/java/Collections-emptySet-Collections-emptyList-Collections

  3.http://www.yiibai.com/java/util/collections_emptyset.html

  4.http://stackoverflow.com/questions/14846920/collections-emptymap-vs-new-hashmap

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值