반복기 사용 시 현재 루프 인덱스를 가져오려면 어떻게 해야 합니까?
반복기를 사용하여 컬렉션을 반복하고 있는데 현재 요소의 인덱스를 가져오려고 합니다.
내가 어떻게 그럴 수 있을까?
저도 같은 질문을 했고, 그 결과,ListIterator
일했다.위의 테스트와 유사합니다.
List<String> list = Arrays.asList("zero", "one", "two");
ListIterator<String> iter = list.listIterator();
while (iter.hasNext()) {
System.out.println("index: " + iter.nextIndex() + " value: " + iter.next());
}
반드시 전화 주세요.nextIndex()
이 모든 것을 실제로 얻기 전에next()
.
자체 변수를 사용하여 루프에서 변수를 증가시킵니다.
사용자 고유의 변수를 사용하여 이를 간결하게 유지하는 방법은 다음과 같습니다.
List<String> list = Arrays.asList("zero", "one", "two");
int i = 0;
for (Iterator<String> it = list.iterator(); it.hasNext(); i++) {
String s = it.next();
System.out.println(i + ": " + s);
}
출력(예상하신 대로):
0: zero
1: one
2: two
루프 내에서 인덱스를 늘리지 않는 것이 장점입니다(다만, 루프마다 Iterator#를 1회 호출하는 것에 주의할 필요가 있습니다.단, 위에서만 호출하면 됩니다).
사용할 수 있습니다.ListIterator
계산하려면:
final List<String> list = Arrays.asList("zero", "one", "two", "three");
for (final ListIterator<String> it = list.listIterator(); it.hasNext();) {
final String s = it.next();
System.out.println(it.previousIndex() + ": " + s);
}
어떤 수집품이죠?List 인터페이스의 실장일 경우는, 다음과 같이 할 수 있습니다.it.nextIndex() - 1
.
int를 사용하여 루프 내에서 증가시킵니다.
그냥 이렇게 해.
ListIterator<String> it = list1.listIterator();
int index = -1;
while (it.hasNext()) {
index++;
String value = it.next();
//At this point the index can be checked for the current element.
}
ListIterator를 사용하여 컬렉션을 반복합니다.컬렉션이 사용 개시 리스트가 아닌 경우Arrays.asList(Collection.toArray())
먼저 목록으로 변환합니다.
반복기.nextIndex()를 사용하여 반복기가 있는 현재 인덱스를 반환하기만 하면 됩니다.이 방법은 자체 카운터 변수를 사용하는 것보다 조금 더 쉬울 수 있습니다(계속 사용할 수도 있습니다).
public static void main(String[] args) {
String[] str1 = {"list item 1", "list item 2", "list item 3", "list item 4"};
List<String> list1 = new ArrayList<String>(Arrays.asList(str1));
ListIterator<String> it = list1.listIterator();
int x = 0;
//The iterator.nextIndex() will return the index for you.
while(it.hasNext()){
int i = it.nextIndex();
System.out.println(it.next() + " is at index" + i);
}
}
이 코드는 list1 목록을 한 번에 하나씩 통과하여 항목의 텍스트를 인쇄한 후 "인덱스에 있습니다" 그러면 반복자가 찾은 인덱스를 인쇄합니다. : ).
여기 보세요.
iterator.nextIndex()
에 대한 후속 호출에 의해 반환되는 요소의 인덱스를 제공합니다.next()
.
당신은 이미 답을 알고 있지만, 약간의 정보를 추가할 생각입니다.
Collections를 명시적으로 언급했듯이listIterator
모든 유형의 컬렉션에 대한 인덱스를 가져옵니다.
목록 인터페이스 - ArrayList, LinkedList, Vector 및 Stack.
둘 다 가지고 있다iterator()
그리고.listIterator()
인터페이스를 설정합니다(HashSet, LinkedHashSet, TreeSet 및 EnumSet).
가지고 있는 것iterator()
맵 인터페이스 - HashMap, LinkedHashMap, TreeMap 및 IdentityHashMap
반복기는 없지만 를 사용하여 반복할 수 있습니다.keySet()
/values()
또는entrySet()
~하듯이keySet()
그리고.entrySet()
돌아온다Set
그리고.values()
돌아온다Collection
.
그래서 사용하는 것이 좋다.iterators()
모든 수집 유형에 대한 현재 인덱스를 얻기 위해 값이 연속적으로 증가합니다.
언급URL : https://stackoverflow.com/questions/3329842/how-to-get-the-current-loop-index-when-using-iterator
'programing' 카테고리의 다른 글
ERROR 1054 (42S22):'필드 리스트'의 알 수 없는 열 ' ' (0) | 2022.12.10 |
---|---|
mysqldump 명령줄 유틸리티를 사용하여 mysql 데이터베이스를 완전히 백업하는 방법 (0) | 2022.12.10 |
자바어로 플로트가 뭐죠? (0) | 2022.12.10 |
pytest 실행 중에 생성된 일반 인쇄 출력을 보려면 어떻게 해야 합니까? (0) | 2022.12.10 |
MySQL 테이블 생성일을 확인하려면 어떻게 해야 합니까? (0) | 2022.12.10 |