我有以下代码,一个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执行此操作。
伪代码:
这是我的代码。
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],然后[STA1]用p.detectPP处理。下一个循环dadosSTA有[STA1,STA2],它用p.detectPP处理,但问题是STA1之前已经处理过了。 对于所有下一个周期都会发生相同的情况,例如第3个dadosSTA具有[STA1,STA2,STA3],并且它使用p.detectPP进行处理,但STA1和STA2已在先前的循环中处理。
我想要的是调整代码,以便不处理之前已经处理过的内容,并且我非常确定问题出在for循环中。
由于
答案 0 :(得分:0)
如果我理解你的观点正确..你的问题是你正在处理数据列表..解决方案很简单..我编辑了你的代码:
HashMap<String, Boolean> processedList = new HashMap<String, Boolean>();
然后
String nameSTA = "localserver";
if (!processedList.containsKey(nameSTA) || !processedList.get(nameSTA)) {
processedList.put(nameSTA, false);
ArrayList<Dados> dadosSTA = new ArrayList();
ArrayList<Dados> dataForPPong = new ArrayList();
ArrayList uniqueSTA = q.getUniqueStations(nameSTA);
for (int i = 0; i < uniqueSTA.size(); i++) {
dadosSTA = q.getStationData(uniqueSTA.get(i)
.toString(), nameSTA);
dataForPPong = p.detectPP(5, 3, dadosSTA);
}
processedList.put(nameSTA, true);
}
我认为STA#1名称是“localserver”..所以我检查它是否存在于processedList中,或者它是否存在于false状态..所以你可以处理它..
====== update ======
如果您将STA1,STA2放在一起,它将是一个不同的实现:
HashMap<String, Boolean> processedList = new HashMap<String, Boolean>();
然后
ArrayList<Dados> dadosSTA = new ArrayList();
ArrayList<Dados> dataForPPong = new ArrayList();
ArrayList uniqueSTA = q.getUniqueStations("localserver");
for (int i = 0; i < uniqueSTA.size(); i++) {
String dtl=uniqueSTA.get(i).toString();
if (!processedList.containsKey(dtl) || !processedList.get(dtl)) {
dadosSTA = q.getStationData(dtl, "localserver");
dataForPPong = p.detectPP(5, 3, dadosSTA);
processedList.put(nameSTA, true);
}
}
我认为dtl是一个独特的值..