자바 : 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);
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]
Guava 15.0 이후 Range.asSet () 는 더 이상 사용되지 않으며 버전 16에서 제거 될 예정입니다. 대신 다음을 사용하십시오.
ContiguousSet.create(Range.closed(1, 5), DiscreteDomain.integers());
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;
}
(단지 "아니오"라고 말하는 긴 대답)
Groovy의 멋진 Range 클래스 는 Java에서 사용할 수 있지만 확실히 그루비는 아닙니다.
"Functional Java"라이브러리는 제한된 정도의 프로그래밍을 허용하며 fj.data.Array 인스턴스를 생성하는 range () 메소드를 가지고 있습니다.
보다:
마찬가지로 "Totally Lazy"라이브러리는 지연 범위 방법을 제공합니다. http://code.google.com/p/totallylazy/
If you mean to use it like you would in a Python loop, Java loops nicely with the for statement, which renders this structure unnecessary for that purpose.
Since Java 9 you can use IntStream::iterate
and you can even customize the step. For example if you want int
array :
public static int[] getInRange(final int min, final int max, final int step) {
return IntStream.iterate(min, operand -> operand < max, operand -> operand + step)
.toArray();
}
or List
:
public static List<Integer> getInRange(final int min, final int max, final int step) {
return IntStream.iterate(min, operand -> operand < max, operand -> operand + step)
.boxed()
.collect(Collectors.toList());
}
참고URL : https://stackoverflow.com/questions/3790142/java-equivalent-of-pythons-rangeint-int
'program story' 카테고리의 다른 글
JavaScript를 사용하여 현재 URL에서 쿼리 문자열을 얻는 방법은 무엇입니까? (0) | 2020.08.31 |
---|---|
페이지를 떠나기 전에 저장되지 않은 변경 사항에 대해 사용자에게 경고 (0) | 2020.08.31 |
HttpClient로 신뢰할 수없는 SSL 인증서 허용 (0) | 2020.08.31 |
src / lxml / etree_defs.h : 9 : 31 : 치명적인 오류 : libxml / xmlversion.h : 해당 파일 또는 디렉터리가 없습니다. (0) | 2020.08.31 |
execCommand에서 '일반 텍스트로 붙여 넣기'에 대한 Javascript 트릭 (0) | 2020.08.31 |