社区
Java SE
帖子详情
JAVA 的LIST使用过程中NULL和SIZE=0谁最优
gannian
2009-12-17 11:59:06
我们在编码过程中对于一个空表往往可以作size=0的一个对像或NULL对像来处理.
而NULL对像很容易导致后面在使用过程中报空异常..有时候查错起来很困难.
所以我个人更倾向于使用size=0为对像..不知道二者在性能方面的差异如何...高手指点.
...全文
376
9
打赏
收藏
JAVA 的LIST使用过程中NULL和SIZE=0谁最优
我们在编码过程中对于一个空表往往可以作size=0的一个对像或NULL对像来处理. 而NULL对像很容易导致后面在使用过程中报空异常..有时候查错起来很困难. 所以我个人更倾向于使用size=0为对像..不知道二者在性能方面的差异如何...高手指点.
复制链接
扫一扫
分享
举报
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
qqzhuyuehe
2010-03-15
打赏
举报
回复
[Quote=引用 1 楼 hzhxxx 的回复:]
目的根本不一样
null 是判断对象是否 new 成功
size 是对new 成功的对象实例,求得里面的元素个数
[/Quote]
说得好,简单明了,一针见血!
qin59218
2009-12-18
打赏
举报
回复
都可以,但写接口说明时,一定要说明没有记录时要返回是Null,还是size=0
gannian
2009-12-18
打赏
举报
回复
看样子是我没说清楚啦。。。。举个例子来说吧:
初始化:List list = new ArrayList();
在做一个数据查询里根据需要把结果作处理放入LIST中,但实际上没有需要的结果放入LIST中。
那么此时我们是return null还是return list 呢???
此时如果你return null那么你后面的代码在实际应用过程中极容易出现空值异常(项目已发布可能初期你根本考虑不到会有查不到数据这种情况),特别是调用复杂时查错很麻烦的(有一定工作经验的人应该深有体会).
而我最近在看一些代码时,发现这样的情况它都是作return null处理,难道只是因为个人习惯问题吗?
zhanghuaigong
2009-12-17
打赏
举报
回复
同意二楼的。
jpg1023_2009
2009-12-17
打赏
举报
回复
if(list==null || list.isEmpty()){
return;
}
jpg1023_2009
2009-12-17
打赏
举报
回复
if(list==null || list.isEmpty){
return;
}
myjavaz
2009-12-17
打赏
举报
回复
帮顶
nj_dobetter
2009-12-17
打赏
举报
回复
对象需要时再new, 以提高效率, 所以这样判断
if(list==null || list.size() < 1){
return; //Do nothing, return directly
}
hzhxxx
2009-12-17
打赏
举报
回复
目的根本不一样
null 是判断对象是否 new 成功
size 是对new 成功的对象实例,求得里面的元素个数
java
if(
list
!=
null
){ for(int i=0;i<
list
.
size
();i++){}}是不是可以改成for(int i=0;
list
!=
null
&&i<
list
.
size
();i
写法可读性性能可维护性推荐度先判空再循环优秀优秀优秀★★★★★循环条件判空一般良好一般★★☆☆☆返回空集合优秀优秀优秀★★★★★ 坚持
使用
原始的if (
list
!=
null
)写法,这是最清晰、最易维护的方式。同时,在代码设计
中
尽量返回空集合而不是
null
,从源头上避免空指针问题。
Java
List
获取最后一个元素:安全、性能与最佳实践全解析
在
Java
集合框架
中
,
List
作为最常用的数据结构之一,其元素访问操作是开发
中
的基础技能。从原理上讲,
List
接口提供了基于索引的随机访问机制,但不同实现类如Array
List
和Linked
List
在底层数据结构和访问效率上存在显著差异。理解这些差异对于编写高性能代码至关重要,尤其是在处理边界条件如空列表或并发访问时。在工程实践
中
,安全地获取最后一个元素不仅涉及基本的空值检查,还关系到代码的健壮性和可维护性。通过封装工具类统一处理
null
引用和空列表,可以有效避免IndexOutOfBoundsExcept
Java
List
实现类性能优化与实战技巧
List
是
Java
集合框架
中
最常用的数据结构之一,其实现类如Array
List
和Linked
List
在底层数据结构与性能特性上存在显著差异。动态数组实现的Array
List
擅长随机访问,时间复杂度为O(1),而基于链表的Linked
List
则在插入删除操作上更具优势。理解这些核心原理对性能调优至关重要,特别是在高并发场景如电商推荐系统
中
,错误的选择可能导致严重性能瓶颈。通过合理预分配容量、选择线程安全策略(如CopyOnWriteArray
List
)以及优化算法实现(如避免装箱的二分查找),可以显著提升系统
Java
List
完整知识体系(
Java
版,面试全覆盖)
本文全面剖析
Java
List
集合体系,从底层源码、设计思想到生产实践,涵盖核心实现类对比、线程安全机制、遍历方式优化及工具方法应用。主要内容包括: 架构体系:
List
继承Collection接口,核心实现类Array
List
(动态数组)、Linked
List
(双向链表)、Vector(废弃线程安全类),各自针对不同场景优化。 核心实现对比: Array
List
:随机访问O(1),尾部操作高效,但
中
间增删需数组移位;JDK8懒加载+1.5倍扩容优化内存 Linked
List
:首尾增删O(1),无扩容开销,但
Java
List
排序原理与实战:从Timsort到并发安全
List
排序是
Java
集合操作
中
最常用也最易被误解的基础能力,其本质并非简单API调用,而是涉及算法选择(如Timsort)、比较契约(Comparator)、泛型擦除、内存模型与线程安全的综合体现。理解排序原理有助于规避空指针、并发修改、不可变视图等高频异常;掌握Timsort在部分有序数据
中
的O(n)优势,可显著提升日志、订单、配置等真实场景性能;而正确处理
null
安全、动态字段排序、Stream与原地排序选型,则直接决定系统稳定性与吞吐量。本文聚焦
Java
开发者在日常开发、面试和线上排障
中
反复遭遇的核
Java SE
62,620
社区成员
307,251
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章