【问题标题】:JAVA - not working codeJAVA - 不工作的代码
【发布时间】:2012-12-04 17:53:06
【问题描述】:

我有第一个 list_session 包含 1,2,2,3 。第二个 list_time 包含 30,17,25,46 。当 list_session 的第二个元素等于第一个元素时,然后将此时间添加到第三个 list_time 否则添加 value= -1 . 第三个元素和第四个元素等相同。 我的代码不起作用。为什么 ? 如何修改代码?

while (it8.hasNext()) {
        tempTime = it8.next();
        tempSession = it7.next();

        if (testSession.equals(tempSession)) {
            testSession = tempSession;
            time.add(tempTime);
        } else {
            time.add(value);
            testSession = tempSession;
        }
    }
    for (int j = 0; j < time.size(); j++) {
        System.out.println(time.get(j) + " time");
    }

【问题讨论】:

  • 什么意思,它不起作用?抛出异常?显示错误的结果?
  • 您确实没有显示足够的代码。请至少说明list_session 和list_time 与此片段的关系。你打算在哪里增加价值-1?
  • 在 java.util.ArrayList$Itr.next(ArrayList.java) 的 java.util.ArrayList$Itr.checkForComodification(ArrayList.java:819) 的线程“main”中出现异常 java.util.ConcurrentModificationException :791) 在 appidentifysession.AppIdentifySession.main(AppIdentifySession.java:36) Java 结果:1 AppIdentifySession.java:36 是包含 tempTime = it8.next(); 的行

标签: java arrays loops if-statement arraylist


【解决方案1】:

首先,如果你有一些关联,你必须在 Java 中使用 Association List 是 Map,

其次,创建键是会话ID和值时间列表的映射

第三,通过地图,只需检查值列表中的 2 个或更多值,以及您想要的某些条件。

附:不要使用两个列表而不是关联列表会犯很多错误

【讨论】:

    【解决方案2】:

    根据ArrayList API:

    "这个类的 iterator 和 listIterator 方法返回的迭代器是 fail-fast 的:如果在迭代器创建后的任何时候对列表进行结构修改,除了通过迭代器自己的 remove 或 add 方法之外,迭代器将抛出 ConcurrentModificationException。因此,面对并发修改,迭代器快速而干净地失败,而不是在未来不确定的时间冒任意的、非确定性的行为。"

    如果 it8 是列表“时间”上的迭代器,那可能是罪魁祸首。您将值直接添加到时间,使迭代器 it8 陈旧。如果必须以这种方式添加值,则应使用迭代器的 add 方法。可能更好的方法是在完全不同的列表中收集结果。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-07-10
      • 2018-04-06
      • 2021-02-10
      • 1970-01-01
      • 2013-06-03
      • 2017-05-19
      相关资源
      最近更新 更多