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;
}
(단지 “아니오”라고 말하는 긴 대답)