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里面不就行了吗?

    评论

报告相同问题?

悬赏问题

  • ¥60 Python如何后台操作Vmwake虚拟机键鼠
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog
  • ¥15 Excel发现不可读取的内容