wuzangji0642 2018-01-03 14:44 采纳率: 0%
浏览 1175
已结题

java list remove add问题

原始数据
图片说明
排序后数据
图片说明
排序规则,如果一条数据的staff_id出现多次,date最大的那条记录的位置不变,将date较小的那条排在下面(对同一个staff_id进行内部排序)
原始数据中,staff_id为1和2的出现了多次,date最大的分别是
1 ada 7 201801和 2 anna 6 201712
因为anna的数据少,先看 anna ,anna的另一条记录,date是201711,小于201712,应该排在后面,所以数据变成了
1 ada 5 201711
3 jack 6 201711
1 ada 6 201712
2 anna 6 201712
2 anna 5 201711
1 ada 7 201801
ada同理,最后变成了第二幅图上的排序结果。
算法如下
List resultListOrder=...

for(Object[] rowOrder:resultListOrder)
{
for(Object[] row:resultListOrder)
{
//staff_id相同的且date较大
if((int)rowOrder[0] ==(int) row[0]&&(int)rowOrder[4]>(int)row[4])
{
Object[] tempRow = row;
//remove date较小记录
resultListOrder.remove(resultListOrder.indexOf(row));
//将date较小记录插入较大记录下一行
resultListOrder.add(resultListOrder.indexOf(rowOrder)+1,tempRow);

        }
  }

}
程序报错 ConcurrentModificationException,是remove造成的。解决方法可以用
Iterator,但是不知道怎么把刚刚那个算法改成Iterator,请问该怎么修改能实现正确的排序

  • 写回答

9条回答 默认 最新

  • JPF1024 2018-01-03 15:05
    关注

    你把remove换成:符合要求的加入到一个新的List里面不就行了吗?

    评论

报告相同问题?

悬赏问题

  • ¥15 c程序不知道为什么得不到结果
  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置