java - Foreach 没有击中最后一项

标签 java foreach

我有一个 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());
        }

最佳答案

循环的最后一条语句确保 previousId 在循环结束后始终等于 managerId,因此它永远不会进入 if.

我认为您总是希望发送最后一封电子邮件,因为您知道至少有一个请求。

关于java - Foreach 没有击中最后一项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35278062/

相关文章:

java - SQL存储过程中多列游标内容的循环插入

java - 如何限制spring中的对象数量

java - 在控制台输出java中排列数据

javascript - 使用 forEach 从 ng-repeat 中删除 json 对象和 Accordion header

c# - 使用 Linq 查询丢失 foreach

java - 将位图绘制到 Canvas 上重叠

java - 在 Java 中重写 toString() 时遇到问题

powershell - 如何在将两个哈希表与 Powershell 进行比较时选择特定的哈希表键和值?

javascript - Node Js如何等待forEach执行并获取计数结果

javascript - typescript 中的 forEach 函数