java开发:常见知识点总结

2019-11-25  本文已影响0人  爱你为你做饭

开发过程中会经常遇到当时开发想不到的问题,在此开帖整理这种问题,加强记忆和后续参考整理(持续更新中)。

  1. list中数据校验(正序/增序)的时候使用remove方法造成数据校验出问题
  1. list.map等特别是普通list,map在remove的时候(特别是增强for循环)极其容易出现ConcurrentModificationException。
    原因分析:list的遍历包含for循环,迭代器,增强for循环,后面的增强for循环实质也是迭代器模式实现(java最新提供的一个语法,方便处理),迭代器是java提供遍历list等表结构工具类,是维护在一个单独线程中的且加锁,迭代器维护了list的一张索引表,在索引的同时,list删除子item,并不会同步给迭代器,迭代器找不到对应的索引item就回爆出上面异常,map遍历同list,通过迭代器模式遍历也会出现这种情况。
    解决方案:
  1. 日期比较:
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd"); 
  Date bt=sdf.parse(beginTime); 
  Date et=sdf.parse(endTime); 
  if (bt.before(et)){ 
   //表示bt小于et 
  }else{ 
   --反之 
  }
String lastCurrentSigninDate = getDzCurrentsigninDate();
            String currentSignInDate = TimeUtils.getFormatDate("yyyy-MM-dd");
            if (TextUtils.isEmpty(lastCurrentSigninDate)) {
                setDzCurrentsigninDate(currentSignInDate);
            } else {
                if (lastCurrentSigninDate.compareTo(currentSignInDate) < 0) {
                    setDzLastsigninDate(lastCurrentSigninDate);
                    setDzCurrentsigninDate(currentSignInDate);
                }
            }

map遍历方法及其正确删除方法
java增强for循环实质实现
掘金:concurrenthashmap是否真正的线程安全
比较深奥:深入剖析concurrenthashmap,底部有其第二篇

上一篇下一篇

猜你喜欢

热点阅读