> Java > java지도 시간 > 본문

Java의 반복자에 대한 자세한 설명

黄舟
풀어 주다: 2017-09-25 10:16:18
원래의
1350명이 탐색했습니다.

Java는 Iterator를 사용하여 다양한 컨테이너에 대한 공통 운영 인터페이스를 제공합니다. 이 기사를 통해 Java에서 Iterator의 사용 분석을 공유하겠습니다. 필요한 친구는 이를 참조할 수 있습니다.

Iterator란 무엇입니까

Java에는 많은 데이터 컨테이너가 있으며 해당 작업에는 많은 공통점이 있습니다. Java는 반복자를 사용하여 다양한 컨테이너에 대한 공통 작업 인터페이스를 제공합니다. 이는 컨테이너의 순회 작업을 특정 기본 구현에서 분리하여 분리 효과를 얻습니다.

Iterator 인터페이스에는 세 가지 메소드가 정의되어 있습니다.

Java 컬렉션 클래스의 Map 인터페이스 아래에 있는 관련 클래스는 Collection 인터페이스의 관련 클래스처럼 get() 메소드를 구현하지 않습니다. 순회 출력을 구현해야 합니다. 객체의 데이터를 얻기 위해 get() 메서드를 직접 사용할 수 있는 방법은 없지만 Java 자체에서는 Iterator를 사용하여 데이터를 순회하는 또 다른 방법을 제공합니다. 데이터를 탐색하고 읽는 것은 본질적으로 메서드가 아니며 단지 디자인 패턴일 뿐이며 개체, "경량" 개체입니다. 다음은 다양한 인터페이스에서 Iterator를 사용하는 방법을 설명합니다.

(1) Collection 인터페이스에서 Iterator를 사용합니다.

 Collection 인터페이스의 관련 클래스가 get() 메서드를 구현하더라도 여전히 Iterator를 사용하는 것이 적절합니다. Collection에서 Iterator를 사용하는 두 가지 방법을 논의하기 위해 ArrayList를 예로 들어 보겠습니다.

 1 . 순회 출력을 달성하기 위해 while() 루프와 협력합니다.


 ArrayList list = new ArrayList();
 //此处省略list的具体赋值过程
 Iterator it = list.iterator();
     while(it.hasNext()){
       System.out.println(it.next());
     }
로그인 후 복사

while()의 판단 조건 it.hasNext()는 다음 요소가 있는지 판단하는 데 사용됩니다. 루프를 실행하고 명령문을 출력합니다. it.next() in은 "포인터"를 한 위치 뒤로 이동할 수 있을 뿐만 아니라 출력을 위해 현재 요소를 반환할 수도 있습니다.

 2. 순회 출력을 얻으려면 for() 루프를 사용하세요.


 ArrayList list = new ArrayList();
 //此处省略list的赋值过程
 for(Iterator it = list.iterator();it.hasNext();){
       System.out.println(it.next());
 }
로그인 후 복사

for() 루프의 사용 원리는 while()과 동일하므로 여기서는 자세히 설명하지 않겠습니다.

그러나 위의 내용은 일반 for() 루프에서 사용됩니다. foreach 자체는 반복자와 동일하므로 for Each 루프와 함께 Iterator를 대체할 수도 있습니다. for Each는 요소를 추가하고 삭제하는 데 적합하지 않습니다. 단순히 요소를 순회하는 데 사용되는 경우 이 방법이 더 간결할 수 있습니다.


(2) Map 인터페이스에서 Iterator 사용:

다음은 HashMap을 예로 사용하여 Iterator를 사용하는 두 가지 주요 방법을 논의합니다. 1. while()

 ArrayList list = new ArrayList();
 //此处同样省略list的赋值过程
 for(Object array:list){
      System.out.println(array);
 }
로그인 후 복사
//출력 형식을 더 높이려면 toString() 메서드를 직접 다시 작성할 수 있습니다. toString 메서드를 다시 작성하는 것은 여기서의 초점이 아니기 때문입니다. 기사이므로 지금은 논의하지 않겠습니다.

Map 인터페이스의 반복자 애플리케이션 메소드는 Collection의 그것과 약간 다릅니다. EntrySet() 메소드는 전체 키-값 쌍을 반환하는 데 사용됩니다.

2. for()

 HashMap<K,V> myMap = new HashMap<K,V>();
 //省略myMap的的赋值过程
 Iterator<Map.Entry<K,V> it=myMap.entrySet().iterator();
 while(it.hasNext()){
     System.out.println(it.next());
 }
로그인 후 복사
와의 조합 위에는 여러 예가 있으므로 여기서는 원리를 계속 설명할 필요가 없습니다.

마찬가지로 Iterator 대신 for Each를 사용하는 방법은 다음과 같습니다.

 HashMap<K,V> myMap=new HashMap<K,V>();
 //省略myMap的赋值过程
 for(Iterator<Map.Entry<K,V>> it=myMap.entrySet().iterator();it.hasNext();){
       System.out.println(it.next());
 }
로그인 후 복사

for Each EntrySet() 메서드도 사용됩니다. 너무 많이 설명하지 마세요.

결론: Iterator 클래스는 java.util 경로에 캡슐화되어 있으므로 Iterator를 사용하려면 java.util.Iterator를 가져오거나 java.util.*을 가져와야 합니다.

위 내용은 Java의 반복자에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!