【发布时间】:2013-06-04 22:09:21
【问题描述】:
我有以下代码,一个 for 循环。我想在每次迭代中处理少量数据。
ArrayList uniqueSTA = q.getUniqueStations("localserver");
返回代表 STA 的字符串 ArrayList,假设是一台计算机(名称、价格等)
dadosSTA = q.getStationData(uniqueSTA.get(i).toString(), "localserver");
dadosSTA 代表 ArrayList 的 Dados 对象,它包含有关特定计算机的所有信息,例如名称、价格等。
dataForPPong = p.detectPP(5, 3, dadosSTA);
是检测一个事件。
现在我需要为每个 STA 和 STA 按 STA 执行此操作。
伪代码:
- 获取所有 STA -> 返回类似 STA1、STA2、STA3、STA4...
- 从 STA1 获取所有数据
- 为 STA1 检测 PP
- 保存在数组中
- 返回 1) 并为 STA2 执行操作,以此类推
这是我的代码。
ArrayList<Dados> dadosSTA = new ArrayList<>();
ArrayList<Dados> dataForPPong = new ArrayList();
ArrayList uniqueSTA = q.getUniqueStations("localserver");
for(int i = 0; i<uniqueSTA.size(); i++)
{
dadosSTA = q.getStationData(uniqueSTA.get(i).toString(), "localserver");
dataForPPong = p.detectPP(5, 3, dadosSTA);
}
编辑
我好像不太清楚,所以这里解释一下我的问题:
假设数组 dadosSTA 有 [STA1] 然后用 p.detectPP 处理 [STA1]。下一个循环 dadosSTA 有 [STA1,STA2] 并用 p.detectPP 处理,但这里的问题是 STA1 之前已经处理过。 所有接下来的循环都会发生同样的情况,比如第三个 dadosSTA 有 [STA1,STA2,STA3] 并且它是用 p.detectPP 处理的,但是 STA1 和 STA2 已经在前面的循环中处理过了。
我想要的是调整代码以便不处理之前已经处理过的内容,我很确定问题出在 for 循环内。
谢谢
【问题讨论】:
-
你的问题是什么?
-
我不希望它重新处理他在之前的周期中已经处理过的数据。我尝试在每个周期开始时创建一个临时 ArrayList,并在周期结束时将处理后的数据添加到最终数组中,但出现堆错误,看起来内存不足。我的数据大约有 50 000 条记录。
-
q.getStationData(uniqueSTA.get(i).toString(), "localserver");这个功能有什么作用?或者请尽量说清楚你认为你在哪里重复处理..
-
它返回所有要处理的数据 p.detectPP(5, 3, dadosSTA);
-
getStationData 从哪里返回它?来自 uniqueSTA 或 q ?