有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java以定义的顺序(从中间开始)在一个范围内循环的最佳方式

我想在定义的范围内循环,但顺序对我来说很重要。 假设我在20位,我想从20到30,然后从20向后到10。 我目前的代码是:

Object nextElement = currentElement.next();
for (int i= 20; i<= 30; i++) {
    if (nextElement == null) {
        break;
    }
    if (!isCondition(nextElement,i)) {
        continue;
    }
    nextElement.runSomething();
    nextElement = nextElement.next();
}

Object previousElement = currentElement.previous();
for (int i= 20; i>= 10; i--) {
    if (previousElement == null) {
        break;
    }
    if (!isCondition(previousElement ,i)) {
        continue;
    }
    previousElement .runSomething();
    previousElement = previousElement.previous();
}

我的问题是,我在两个循环上运行了90%相同的代码。这些数字对元素没有用处,它们只是用来计数。有更简单的方法吗

更新:我忘了一个重要的部分!重复的代码将操纵循环


共 (1) 个答案

  1. # 1 楼答案

    你可以这样做:

    int[] indices = { 20,21,22,23,24,25,26,27,28,29,30,20,19,18,17,16,15,14,13,12,11,10};
    
    for (int i : indices) {
      // loop body
    }
    

    当然,你也可以建立索引列表:

    List<Integer> indices = new ArrayList<Integer>();
    for (int i=20 ; i<=30 ; i++) indices.add(i);
    for (int i= 20; i>=10; i ) indices.add(i);
    
    for (int i : indices) {
      // loop body
    }