java - 即使在继续时也保留 Java for 循环中集合的前一个元素

标签 java loops syntax

我需要将下一个元素与上一个元素匹配。如果我想继续迭代。但我不喜欢复制/粘贴分配给前一个元素:

List<Type> all;
Type prev = null;
for (Type curr : all) {
    if (prev == null) {
        prev = curr;
        continue;
    }
    if (isBad(curr)) {
        prev = curr;
        continue;
    }
    if (! curr.match(prev)) {
        prev = curr;
        continue;
    }
    process(prev, curr);
    prev = curr;
}

如何避免 prev = curr 重复?

我认为解决方案:

for (Type curr : all) {
    if (prev != null && !isBad(curr) && curr.match(prev)) {
        process(prev, curr);
    }
    prev = curr;
}

是作弊,因为 process(prev, curr); 不应该缩进。错误检查逻辑不应干扰主执行逻辑(强制缩进)。

最佳答案

您可以使用带有索引的 for 循环,这样您就可以读取“ahead”,并且您不应该对前一个循环使用变量,在这种情况下,i 的最后一个值必须为 size-1。

    List<Type> all;
    Type prev = null;
    for(int i=0; i<all.size()-1; i++) {
        if(isBad(all.get(i)) {
            continue;
        }
        if(all.get(i).match(all.get(i+1)) {
            continue;
        }

        ...
    }

关于java - 即使在继续时也保留 Java for 循环中集合的前一个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42955096/

相关文章:

java - 自定义 IBM MQ 的自动重新连接设置

syntax - 为什么将特征作为函数参数传递时需要 `impl`?

javascript - var functionName = function() {} vs function functionName() {}

ms-access - VBA:声明新对象的两种方式的区别? (试图了解为什么我的解决方案有效)

java - 自动更新JTable

java - 比较二维数组中的 2 个元素

java - 在服务器上部署时发布导出到 PPTX 的下载报告

javascript - 如何循环或迭代相同组件的 html 代码

javascript - 如何修复两个相同元素的卡住循环?

java - 求正数列表的算术平均值