检查下一个数组元素是否与Java中的当前元素不同

时间:2010-09-11 15:23:36

标签: java arrays

我想告诉下一行是否与当前行不同,或者这是最后一行 如果我使用此代码,我确定不会获得ArrayIndexOutOfBoundsException吗? 这是检查这个的好方法吗?

for (current_line = 0; current_line < lines_array.length; current_line++) {
    /* ... */
    boolean nextLineIsDifferentOrThereIsNoNextLine =
         (current_line + 1 >= max_lines) ? true :
         !lines_array[current_line].equalsIgnoreCase(lines_array[current_line + 1]);
    /* ... */
}

编辑:

我用一个小阵列尝试了它,但我没有得到任何例外。怎么会这样? :S

3 个答案:

答案 0 :(得分:2)

如果max_lines等于lines_array.length,那么它将完全正常。只需添加一行注释即可澄清事物(尽管变量的名称非常清楚)

current_line + 1 >= maxLines确保您没有获得ArrayIndexOutOfBounds

也许值得注意的是,数组中一定不能有null个条目,否则会冒NullPointerException的风险。因此,为了不使代码混乱,您可以创建一个私有方法:

private boolean itemsDiffer(String current, String next) {
    if (current == null && next == null {
        return false; // or true, if that's your semantics
    } else {
        return current == null || current.equalsIgnoreCase(next);
    }
}

然后:

boolean nextLineIsDifferentOrThereIsNoNextLine =
     (current_line + 1 >= max_lines) ? true : 
        itemsDifferent(linesArray[current_line], linesArray[current_line + 1];

答案 1 :(得分:1)

为什么不按照自然顺序迭代它,我的意思是你不必将它与下一个数组进行比较,只需将它与前一个数组进行比较。

答案 2 :(得分:0)

对我来说没问题,假设您的数组不包含空值。