-3

我有第一个 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");
    }
4

2 回答 2

1

首先,如果你有一些关联,你必须使用Java 中的关联列表是 Map,

其次,创建地图,其中键是会话 ID 和时间值列表

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

PS不要使用两个列表而不是一个关联列表它会犯很多错误

于 2012-12-04T18:01:36.740 回答
1

根据ArrayList API

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

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

于 2012-12-04T18:45:07.487 回答