programing

반복기 사용 시 현재 루프 인덱스를 가져오려면 어떻게 해야 합니까?

copysource 2022. 12. 10. 14:16
반응형

반복기 사용 시 현재 루프 인덱스를 가져오려면 어떻게 해야 합니까?

반복기를 사용하여 컬렉션을 반복하고 있는데 현재 요소의 인덱스를 가져오려고 합니다.

내가 어떻게 그럴 수 있을까?

저도 같은 질문을 했고, 그 결과,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

반응형