请问关于java中list.size() \u003c=0的问题
首先想问下这个判定条件是在什么情况下使用补充下,其他同学说的很有道理。稍微做个补充,判断list.size() \u0026lt;= 0 是做出了防御性编程,因为list的实现不一定仅有arraylist这种使用数组的,还会有其他的list实现,甚至是自己的list实现,那么在这种情况下我们针对接口编程 List list = new ? ; 我们不知道这个list的具体实现是什么。补上size()的定义 /** * Returns the number of elements in this list. If this list contains * more than \u0026lt;tt\u0026gt;Integer.MAX_VALUE\u0026lt;/tt\u0026gt; elements, returns * \u0026lt;tt\u0026gt;Integer.MAX_VALUE\u0026lt;/tt\u0026gt;. * * @return the number of elements in this list */由该定义可以看出返回的是节点的数量。使用list.size() \u0026lt;= 0 (溢出或者其他自定义实现逻辑错误,或者某种特殊的list实现会出现负节点数的数量时,例如并发消费者过多,生产者拿了钱还欠着货的情况:) )做一下特殊处理就很有必要了。针对与isEmpty。在接口中该函数给出的定义是 * Returns \u0026lt;tt\u0026gt;true\u0026lt;/tt\u0026gt; if this list contains no elements. * * @return \u0026lt;tt\u0026gt;true\u0026lt;/tt\u0026gt; if this list contains no elements该函数的主要意义在于定义自己的判断list是否为空的实现。两个函数语义不同。一般情况下如ArrayList 或者其他数组实现的。isEmpty基本满足需要,但是其他情况下还是需要考虑size \u0026lt;= 0的情况。
■网友
你的想法没有错,推荐用isEmpty。“\u0026lt;=0”的写法实际效果一样,但是太不直观
■网友
说个故事吧,曾经国内某一线互联网公司做活动送小礼品,判断礼品剩余数量==0则活动结束,结果因为并发问题,礼品剩余数量直接成了负数。事后想来,当初写成\u0026lt;=0该多好。
■网友
不知道你在哪里看到这段代码。不过别人也没写错不是么,加上小于的话可以避免万一JDK没写好,而出现的整数符号溢出错误。按我的理解这是防御性编程,当然用isEmpty或者==也是一样,只是个人偏好问题。
推荐阅读
- 过节■江苏省委省政府办公厅下发关于做好2021年元旦春节期间有关工作的通知
- 银行高管的薪酬结构图表最新的,请问在哪里可以收集
- 在上海陆家嘴附近工作,请问去哪边租房会比较好
- 坐标合肥,请问在哪里能捕捉到程序员这种生物他们大都出现在哪里呢
- 孕妇到了预产期,小孩还没有入盆,请问是该等下去还是直接剖腹产
- |徐州市出台《关于优化创新创业生态系统 提升区域科技创新活力的实施意见》及实施细则
- 雨下|全球关于禁售燃油车只是理论上可行吗
- dart这编程语言现在发展怎么样了,语法与Java,c#很相似,甚至更简洁
- 关于用phpfsocket 写Post, 模拟http 报文怎样写入要传输的处理数据
- 想做手机网游代充,请问要去哪里找货源