Collections.emptyList()与高并发

本文探讨了在Java中查询和遍历列表的两种常见方式,对比了返回null与返回空列表的优劣。深入讲解了使用Collections.emptyList()方法的优势,尤其是在高并发场景下节省内存的策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

设想下,当我们要先查询数据,而后遍历列表时的常用代码写法

第一种:

    List a = getList();//有可能返回是null
    if(a != null){
        for(...){
            
        }
    }

第二种:

    List a = = getList();//当无结果时返回空列表
    for(...){
        
    }

作为列表的使用者,我们当然希望后者的写法 因此 在 getList方法返回空列表 一般我们会这样写:

    ...
    return new ArrayList();

但是这样会占用内存,程序被高并发调用n次时,占用的内存为n份,积少成多,因此jdk提供了Collections.emptyList()方法,该方法返回一个final形式且全局唯一的静态的空列表(不允许任何改动,无法添加元素)。这样就算有无数次调用也只占用一份内存。

同时Collections下还有类似的emptyMap,emptySet等等

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值