文章预览
阿里妹导读 文章讲述了在Java编程中遇到并解决ConcurrentModificationException异常的经历与教训。 发现问题 在一次开发过程中,业务想知道消息是否是退款驱动发送的,而唯一判断的方法,是从消息的明细(可能是乱序的)中取出 唯一的一个退款明细 ,通过修改时间,看它是不是最后一条更新的明细,从而判断出它是退款驱动的消息。初来乍到的笃某不假思索,对方法入参内的列表使用了排序大法,通过实现compare接口,对应两个Detail的修改时间,便很轻松的获取到了想要的值。方法大致如下: public Boolean isReFundEvent (Event event) { List details = event.getDetails(); if (Collections.isEmpty(details)) { throw new Exception(...); } Collections.sort(details, new Comparator () { @Override public int compare(Detail input1, Detail input2) { return input1.getModifiedDate().compar
………………………………