我有一个foreach
假设要经过arraylist
并在每次项目更改时执行操作。
所以它类似于:
ID | Request
1 | z
2 | e
它会向1
发送一封电子邮件,说"您有1个请求"。然后发送电子邮件至2
"您有1个请求"等等。
我的循环并没有解决最后一项,因为列表中只有2个项目,而且我很难找到优雅的解决方法。
Integer managerId = null;
Integer previousManagerId = null;
if(requests != null && requests.size() > 0){
for(Request request : requests){
managerId = request.getId();
if((!managerId.equals(previousId) && previousId != null)){
e.sendEmail(previousId, numReq.toString());
numReq = 0;
}
numReq++;
previousId = managerId;
}
//Suppose to address the last item. Fails when size == 2
if((!managerId.equals(previousId) && previousId != null)){
eusendEmail(previousId, numReq.toString());
}
答案 0 :(得分:4)
循环的最后一个语句确保在循环结束后previousId
始终等于managerId
,因此它永远不会进入if
。
我认为您总是希望发送最后一封电子邮件,因为您知道至少有一个请求。
答案 1 :(得分:0)
你必须将previousId保存在for each之外,因为它会在每次通过下一个对象时删除此值;)
但是你为什么要做第一个呢?无论如何,foreach不会这样做吗?
如果您尝试这样做:
String managerId = "";
for(Request request : requests){
managerId = request.getId();
if(!managerId.equals(previousId)){
request.sendEmail(previousId, numReq.toString());
numReq = 0;
}
numReq++;
}