[java] 자바 : Python의 범위 (int, int)와 동일합니까?

Java에는 Python의 range(int, int)방법 과 동등한 기능이 있습니까?



답변

Guava 는 또한 Python과 유사한 것을 제공합니다 range.

Range.closed(1, 5).asSet(DiscreteDomains.integers());

Guava의 AbstractIterator를 사용하여 동일한 종류의 작업을 수행하기 위해 상당히 간단한 반복기를 구현할 수도 있습니다.

return new AbstractIterator<Integer>() {
  int next = getStart();

  @Override protected Integer computeNext() {
    if (isBeyondEnd(next)) {
      return endOfData();
    }
    Integer result = next;
    next = next + getStep();
    return result;
  }
};


답변

이전 질문, 새 답변 (Java 8 용)

    IntStream.range(0, 10).forEach(
        n -> {
            System.out.println(n);
        }
    );

또는 메서드 참조 :

IntStream.range(0, 10).forEach(System.out::println);


답변

Guava 15.0 이후 Range.asSet () 는 더 이상 사용되지 않으며 버전 16에서 제거 될 예정입니다. 대신 다음을 사용하십시오.

ContiguousSet.create(Range.closed(1, 5), DiscreteDomain.integers());


답변

Jools 라는 작은 Java 유틸리티 라이브러리에서 작업 중이며 Range필요한 기능을 제공 하는 클래스 가 포함되어 있습니다 (다운로드 가능한 JAR이 있습니다).
생성자 중 하나입니다 Range(int stop), Range(int start, int stop)또는 Range(int start, int stop, int step)(for 루프에 비슷한) 당신은 게으른 평가를 사용하는, 그것을 통해서 반복 처리를 할 수있다, 또는 당신이 사용할 수있는 toList()명시 적 범위 목록을 얻으려면 방법.

for (int i : new Range(10)) {...} // i = 0,1,2,3,4,5,6,7,8,9

for (int i : new Range(4,10)) {...} // i = 4,5,6,7,8,9

for (int i : new Range(0,10,2)) {...} // i = 0,2,4,6,8

Range range = new Range(0,10,2);
range.toList(); // [0,2,4,6,8]


답변

public int[] range(int start, int stop)
{
   int[] result = new int[stop-start];

   for(int i=0;i<stop-start;i++)
      result[i] = start+i;

   return result;
}

구문 또는 스타일 오류를 용서하십시오. 나는 일반적으로 C #으로 프로그래밍합니다.


답변

범위의 정수 세트를 가져 오기 위해 다음 코드 스 니펫을 사용할 수 있습니다.

    Set<Integer> iset = IntStream.rangeClosed(1, 5).boxed().collect
            (Collectors.toSet());


답변

public int[] range(int start, int length) {
    int[] range = new int[length - start + 1];
    for (int i = start; i <= length; i++) {
        range[i - start] = i;
    }
    return range;
}

(단지 “아니오”라고 말하는 긴 대답)