List 集合使用时写到的bug

Posted hzbao

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了List 集合使用时写到的bug相关的知识,希望对你有一定的参考价值。

if (null !=merchLadderRatesRecords && merchLadderRatesRecords.size() !=0 && merchLadderRatesRecords.isEmpty()
){
for (MerchLadderRateRecord merchLadderRateRecord : merchLadderRatesRecords) {
merchLadderRateRecord.setInsertTime(date);
merchLadderRateRecordMapper.save(merchLadderRateRecord);
}
}

这个其实是我自己忘记加!号了导致结果一直是false也就是永远都不会进入这个方法体内,当时也忙就很随心得写了一下,如果我加上!号他是正确的,但是也是多此一举,我们看下List的isEmpty的源码

技术图片

 

 

 如我我们用list.size() 的话就不用用isEmpty这个方法,用isEmpty是在 这个List的内部对它做了判断。所以我们在对List进行 非空判断的时候要用

list!=null && list.size>0,这两个条件是必须的,因为假如你只用list.size()做判断的话也会出现意想不到的结果。看示例:

技术图片

 

 list.isEmpty()可以判断出list为空所以是false , size呢是因为我们在list当中插入了一条空的数据所以判断他有一条数据,其次是对象的创建

看示例:技术图片

 

 空指针了是因为 list1 声明了该对象为空也就没有存在内存当中,因为 isEmpty是list1内部的方法你没有声明这个对象,你用它当然会空指针了。当我们用 List  list = new ArrayList的时候才会在内存中为对象分配内存地址。

  1. 总结 当对象没有创建的时候我们不能用  isEmpty() 这个方法,会出现空指针异常  
  2.  判断list的是否为空我们可以用  list != null &&  list.size()>0 来判断。
  3. 在使用一些对象方法的时候一定要看底层源码或者我们理解他的意思。再一个是我们要认真点多多自测。

 

以上是关于List 集合使用时写到的bug的主要内容,如果未能解决你的问题,请参考以下文章

深度分析:面试阿里,字节跳动,美团90%被问到的List集合,看完还不懂算我输

把ArrayList集合中的字符串内容写到文本文件中

List遍历时删除遇到的问题

Java集合 LinkedList的原理及使用

整理一下面试经常被问到的关于集合的问题

java集合之List