오름차순 카운트 루프 내부의 list.remove(index) 호출을 보고합니다.

항목 제거 후 목록이 짧아지며 다음 요소를 건너뛰므로 이러한 호출은 의심스럽습니다. 간단한 수정은 제거 후에 색인 변수를 줄이는 것이지만, 반복자를 통해 제거하거나 removeIf() 메서드(Java 8 이후)를 사용하는 것이 더 강력한 대안압니다. remove()가 루프에서 한 번 이상 호출되지 않을 것으로 기대하는 경우 뒤에 break를 추가해 보세요.

예:

  public static void main(String[] args) {
    process(new ArrayList<>(
      Arrays.asList("1", "2", "|", "3", "4")));
  }

  static void process(List<String> list) {
    for (int i = 0; i < list.size(); i++) {
      if (list.get(i).equals("|")) {
        list.remove(i);
        continue;
      }
      System.out.println(list.get(i));
    }
  }

코드는 1 2 3 4가 출력될 것처럼 보이지만 실제로는 3이 출력에서 건너뛰어집니다.

2018.2의 새로운 기능