반응형
Java 8 forIndex(색인 포함)
건축을 할 수 있는 방법은 없을까?forEach
Java 8에서 인덱스로 반복하는 방법?이상적으로 나는 이런 것을 원한다.
params.forEach((idx, e) -> query.bind(idx, e));
내가 지금 할 수 있는 최선은 다음과 같다.
int idx = 0;
params.forEach(e -> {
query.bind(idx, e);
idx++;
});
색인 가능한 집합(목록 등)에 대해 반복하고 있으므로, 다음과 같은 요소들의 지수로 반복할 수 있다고 가정한다.
IntStream.range(0, params.size())
.forEach(idx ->
query.bind(
idx,
params.get(idx)
)
)
;
결과 코드는 보다 쉬운 병렬 처리(물론, 동시 읽기 전용 액세스가 안전하다고 가정할 때)를 제외하고 루프용 고전적인 i++-스타일로 목록을 반복하는 것과 유사하다.
현재 인덱스를 포함하는 하나의 요소로 배열을 캡처할 경우 매개 변수와 함께 작동한다.
int[] idx = { 0 };
params.forEach(e -> query.bind(idx[0]++, e));
위의 코드는 각에 대한 방법이 조우 순서의 요소를 통해 반복된다고 가정한다.Itable 인터페이스는 달리 문서화되지 않은 한 모든 클래스에 대해 이 동작을 지정한다.분명히 그것은 표준 라이브러리에서 Ituply의 모든 구현에 적용되며, 미래에 이러한 행동을 변경하면 역호환성을 깨게 될 것이다.
모음/항목 대신 스트림을 사용하여 작업하는 경우, 각 항목을 동시에 실행할 수 있고 요소가 다른 순서로 발생할 수 있으므로 각 순서에 대해 각 순서에 대해 사용하십시오.다음 코드는 순차 및 병렬 스트림 모두에 대해 작동한다.
int[] idx = { 0 };
params.stream().forEachOrdered(e -> query.bind(idx[0]++, e));
해결책은 있지만, 하천으로 하는 깨끗하고 짧은/단순한 방법은 없으며, 솔직히 말해서, 다음과 같은 방법으로 하는 것이 좋을 것이다.
int idx = 0;
for (Param p : params) query.bind(idx++, p);
또는 이전 스타일:
for (int idx = 0; idx < params.size(); idx++) query.bind(idx, params.get(idx));
참조URL: https://stackoverflow.com/questions/22793006/java-8-foreach-with-index
반응형
'programing' 카테고리의 다른 글
Vuejs - 슬롯 사용 시 하위 구성 요소의 vnode를 렌더링하는 방법 (0) | 2022.05.12 |
---|---|
결과에서 모든 게시물 특성 누락 (0) | 2022.05.12 |
돌연변이 후 경로 변경(VueRouter) 모범 사례(Vuex) (0) | 2022.05.12 |
Vuex에서 지도 상자 맵에 대한 중앙 집중식 상태를 설정하는 방법 (0) | 2022.05.12 |
오류 메시지."Object/Array 타입의 제안서는 기본값을 반환하기 위해 공장 기능을 사용해야 한다." (0) | 2022.05.12 |