listiterator interface java with examples
이 자습서에서는 목록 구현을 탐색하기위한 Java의 ListIterator 인터페이스에 대해 설명합니다. ListIterator 인터페이스의 클래스 다이어그램 및 메서드에 대해 학습합니다.
Iterator와 마찬가지로 ListIterator 인터페이스는 Java의 목록 구현을 탐색하고 목록의 요소에 액세스하는 기능을 제공합니다.
=> 여기에서 Java 교육 자습서의 A-Z를 보려면 여기를 확인하십시오.
학습 내용 :
Java의 ListIterator 인터페이스
ListIterator 인터페이스의 주요 특성 중 일부는 다음과 같습니다.
- ListIterator는 Java 1.2에서 도입되었습니다.
- ListIterator는 Iterator 인터페이스의 하위 인터페이스입니다. 즉, Iterator 인터페이스에서 확장됩니다.
- ListIterator는 목록 구현에서만 작동합니다.
- ListIterator는 생성, 읽기, 업데이트 및 삭제와 같은 모든 작업을 지원합니다. (통칭 CRUD 작업이라고 함).
- ListIterator는 양방향 반복기이며 순방향 및 역방향 반복기를 지원합니다.
- ListIterator의 경우 현재 요소가 없습니다. 커서 위치는 이전 () 메서드에서 반환 한 요소와 다음 () 메서드에서 반환 할 요소 사이의 위치를 가리 킵니다.
이 자습서에서이 인터페이스에 대해 자세히 설명하겠습니다.
ListIterator 클래스 다이어그램
ListIterator는 Collections API 프레임 워크에 속하는 인터페이스입니다. 이 인터페이스는 Iterator 인터페이스에서 확장됩니다. Iterator 인터페이스의 메서드를 상속하는 것 외에도 양방향 반복 및 CRUD 작업을위한 메서드도 지원합니다.
ListIterator 인터페이스의 클래스 다이어그램은 다음과 같습니다.
위 그림은 ListIterator 인터페이스의 클래스 다이어그램을 보여줍니다. 다음 섹션에서는 그림에 표시된 각 방법에 대해 자세히 설명합니다.
4 년 경력의 셀레늄 인터뷰 질문
ListIterator 메서드
ListIterator 인터페이스는 아래 표와 같이 다음과 같은 메소드를 제공합니다.
방법 이름 | 원기 | 기술 |
---|---|---|
없애다() | 무효 제거 () | next () 또는 previous () 메서드에서 반환 된 마지막 요소를 제거합니다. |
hasNext () | 부울 hasNext () | listIterator에 정방향으로 순회 할 요소가 더 있는지 확인합니다. |
다음() | E next () | 목록의 다음 요소를 반환합니다. 그런 다음 커서를 다음 요소를 가리 키도록 이동합니다. |
hasPrevious () | 부울 hasPrevious () | ListIterator에 역방향 / 역방향으로 더 많은 요소가 있는지 확인합니다. |
이전() | E 이전 () | 목록의 이전 요소를 반환하고 커서를 뒤로 한 위치로 이동합니다. |
nextIndex () | int nextIndex () | next () 메서드 호출에 의해 반환 될 요소의 인덱스를 반환합니다. |
previousIndex () | int previousIndex () | previous () 메서드를 호출하여 반환 할 요소의 인덱스를 반환합니다. |
일곱) | 무효 세트 (E 및) | next () 또는 previous () 메서드에서 반환 된 마지막 요소를 새 값으로 바꿉니다. |
추가 (E) | 무효 추가 (E e) | 목록에 새 요소를 추가합니다. |
다음으로 이러한 각 방법에 대해 자세히 설명합니다.
# 1) hasNext ()
원기: 부울 hasNext ()
매개 변수 : 무
반환 값 :
- true => 목록에 다음 요소가 있습니다.
- False => 목록에 더 이상 요소가 없습니다.
기술: 이 메소드는 ListIterator에 정방향으로 순회 할 요소가 더 있는지 확인합니다. 더 많은 요소가 있으면이 메서드는 true를 반환합니다.
# 2) 다음 ()
원기: E 다음 ()
매개 변수 : 무
반환 값 : E => 목록의 다음 요소.
기술: next () 메서드는 목록의 다음 요소를 반환하고 커서를 다음 요소로 이동합니다.
예외 발생 : NoSuchElementException – ListIterator에 다음 요소가없는 경우.
# 3) hasPrevious ()
원기: 부울 hasPrevious ()
매개 변수 : 무
반환 값 : true => ListIterator에 이전 요소가 있습니다.
기술: ListIterator에 역방향 / 역방향으로 더 많은 요소가 있는지 확인합니다.
# 4) 이전 ()
원기: E 이전 ()
매개 변수 : 무
반환 값 : E => 목록의 이전 요소
기술: 이 메서드는 뒤로 이동하면서 목록의 이전 요소를 반환 한 다음 커서를 뒤로 이동합니다.
예외 발생 : NoSuchElementException – ListIterator에 다음 요소가없는 경우.
# 5) nextIndex ()
원기: int nextIndex ()
매개 변수 : 무
반환 값 : int => ListIterator가 목록의 끝에있는 경우 다음 () 메서드 또는 목록 크기에 의해 반환 될 요소의 인덱스입니다.
기술: 이 메서드는 다음 () 메서드 전에 호출 할 수 있습니다. nextIndex () 메서드는 next () 메서드에서 반환 할 요소의 인덱스를 반환합니다. ListIterator가 목록의 끝에 있으면이 메서드는 목록 크기를 반환합니다.
# 6) previousIndex ()
원기: int previousIndex ()
매개 변수 : 무
반환 값 : int => 이전 () 메서드에서 반환 할 요소의 인덱스 또는 ListIterator가 목록의 시작 부분에있는 경우 -1입니다.
기술: 이 메서드는 이전 () 메서드보다 먼저 호출 할 수 있습니다. previousIndex () 메서드는 이전 () 메서드에서 반환 할 요소의 인덱스를 반환합니다. ListIterator가 목록의 시작 부분에 있으면 메서드는 -1을 반환합니다.
# 7) 제거 ()
원기: 무효 제거 ()
매개 변수 : 무
반환 값 : 빈
기술: remove () 메서드는 previous () 또는 next () 메서드에 의해 반환 된 마지막 요소를 삭제합니다. remove () 메서드에 대한 호출은 next () 또는 previous () 메서드를 호출 할 때마다 한 번만 수행 할 수 있습니다.
예외 발생 :
- UnsupportedOperationException – ListIterator는 제거 작업을 지원하지 않습니다.
- IllegalStateException – 현재 작업이 잘못된 상태에있는 경우 즉, 다음 또는 이전이 아직 호출되지 않았거나 다음 또는 이전에 대한 호출 이후에 추가 또는 제거가 호출되지 않았습니다.
# 8) 세트 (E)
원기: 무효 세트 (E 및)
매개 변수 : e => 이전 요소를 대체 할 새 요소
반환 값 : 빈
기술: set () 메소드는 인수로 전달 된 새 값을 사용하여 이전 () 또는 다음 () 메소드에서 반환 된 요소를 설정합니다. 이 메서드는 previous () 또는 next () 메서드를 마지막으로 호출 한 후 add () 또는 remove () 메서드를 호출하지 않은 경우에만 호출 할 수 있습니다.
예외 발생 :
- UnsupportedOperationException – ListIterator가 설정 작업을 지원하지 않습니다.
- ClassCastException – 클래스로 인해 지정된 요소를 추가 할 수없는 경우.
- IllegalArgumentException – 추가되는 요소 / 인수가 불법이거나 유효하지 않은 경우.
- IllegalStateException – 현재 작업이 잘못된 상태에있는 경우, 즉 다음 또는 이전이 아직 호출되지 않았거나 다음 또는 이전에 대한 호출 이후에 추가 또는 제거가 호출되지 않았습니다.
# 9) 더하기 (E)
원기: 무효 추가 (E e)
매개 변수 : e => 목록에 추가 할 새 요소
반환 값 : 빈
기술: add () 메서드는 목록에 새 요소를 추가하는 데 사용됩니다. 요소는 이전 () 메서드가 반환 한 요소가있는 경우 다음 ()이 반환 된 요소 바로 앞에 추가됩니다.
요소를 추가 한 결과 next ()의 값을 반환하는 변경 사항은 없지만 previous () 메서드는 추가 된 요소 만 반환합니다.
데이터웨어 하우징의 메타 데이터 란?
예외 발생 :
- UnsupportedOperationException – ListIterator는 add 메서드를 지원하지 않습니다.
- ClassCastException 클래스로 인해 추가 할 수없는 지정된 요소 인 경우.
- 추가되는 요소 / 인수가 잘못된 경우 IllegalArgumentException입니다.
다음 Java 프로그램은 위의 모든 ListIterator 메소드의 데모를 보여줍니다.
import java.util.*; public class Main{ public static void main(String args()){ //define list and add elements to it ListnameList=new ArrayList(); nameList.add('Savich'); nameList.add('Dane'); nameList.add('Lacey'); nameList.add(1,'James'); System.out.println('Original List:' + nameList); //define a list iterator for this list ListIterator list_itr=nameList.listIterator(); System.out.println('List elements in forward direction:'); //while there are still elements in the list, display next index and element while(list_itr.hasNext()){ System.out.println('Index:'+list_itr.nextIndex()+' Element:'+list_itr.next()); } //call set() method to set next value to 'Sally' list_itr.set('Sally'); System.out.println('
List after set('Sally'):' + nameList); //while there are elements in the list, display previous index and element System.out.println('
List elements in backward direction:'); while(list_itr.hasPrevious()){ System.out.println('Index:'+list_itr.previousIndex()+' Element:'+list_itr.previous()); } //call remove () method list_itr.remove(); System.out.println('List after remove():' + nameList); } }
산출:
Java 예제의 ListIterator 인터페이스
ListIterator를 사용하는 또 다른 예를 살펴 보겠습니다. 이 프로그램에는 정수 값의 ArrayList가 있습니다. 그런 다음 ListIterator를 사용하여 목록을 탐색하고 목록 요소를 표시합니다.
또한 ArrayList에서 짝수 요소 만 선택하고 ListIterator 메서드를 사용하여 값을 홀수로 변경합니다.
import java.util.ArrayList; import java.util.ListIterator; public class Main { public static void main(String() args) { //define ArrayList and add values to it using for loop ArrayList intList = new ArrayList(); for (int i = 0; i <10; i++) intList.add(i+2); System.out.println('Original ArrayList:' + intList); // define the ListIterator ListIterator list_itr = intList.listIterator(); System.out.println('List elements using listIterator:'); //while list has more elements while (list_itr.hasNext()) { //retrieve next element int i = (Integer)list_itr.next(); // print the element System.out.print(i + ' '); // change only even numbers to odd by setting value = value +1 to current element if (i%2==0) { list_itr.set(i+1); // set method to change value } } System.out.println(); System.out.println('Final ArrayList of odd values:' + intList); } }
산출:
자주 묻는 질문
Q # 1) 반복자는 무엇을 의미합니까?
대답: Iterator는 Java에서 Collection 프레임 워크의 일부인 인터페이스입니다. 이 인터페이스는 java.util 패키지에 있습니다. 반복기 인터페이스는 개체 컬렉션을 반복하는 데 사용됩니다.
Q # 2) Java에서 반복기 인터페이스 란 무엇입니까?
대답: Java Collection Framework에서 이전에 사용 된 열거 대신 Java의 반복기 인터페이스가 사용됩니다. 반복자 인터페이스는 버전 1.2부터 Java에 있습니다.
이 인터페이스를 사용하면 모든 Java 컬렉션을 반복하고 컬렉션 요소를 처리 할 수 있습니다.
Q # 3) Java에서 listIterator () 메서드를 사용하는 방법은 무엇입니까?
대답: listIterator () 메소드는 java.util. * 패키지에 속합니다. 이 메서드는 자신을 호출 한 특정 목록 개체에 대한 목록 반복기를 반환하며 목록을 탐색하고 요소에 액세스하는 데 사용할 수 있습니다. listIterator는 목록 구현에서만 작동합니다.
자바에서 배열의 한 요소를 인쇄하는 방법
Q # 4) 반복자는 클래스입니까 아니면 인터페이스입니까?
대답: 반복자는 클래스가 아니라 자바의 인터페이스 . 반복기 인터페이스는 다른 클래스에서 구현할 수 있으며 목록 또는 컬렉션 요소를 반복하는 데 사용할 수 있습니다.
Q # 5) Java에는 몇 가지 유형의 반복기가 있습니까?
대답: Java의 반복자는 세 가지 유형이 있습니다.
- 열거 : 이것은 Vector, hashtable 등과 같은 컬렉션에서 요소를 읽는 데 사용되는 인터페이스입니다. 각 요소는 컬렉션에서의 위치에 따라 번호가 매겨집니다.
- 반복자 : 컬렉션을 통과하기 위해 컬렉션 개체에 적용 할 수 있으므로이 인터페이스를 유니버설이라고 부를 수 있습니다. 이것은 요소를 읽을 수있는 기능과 함께 제거 기능이있는 향상된 열거입니다.
- ListIterator : ListIterator는 양방향 반복, 즉 정방향 및 역방향으로 제공하는 인터페이스입니다. ListIterator는 LinkedList, ArrayList 등을 포함한 목록 구현에서만 작동합니다.
결론
Java의 ListIterator 인터페이스는 Iterator 인터페이스에서 파생됩니다. Iterator 인터페이스의 메서드를 직접 상속하는 것 외에도 listIterator 인터페이스는 프로그래머가 양방향 반복을 수행하는 데 도움이 될 수있는 자체의 다양한 메서드를 도입합니다.
이 튜토리얼에서는 ListIterator 인터페이스의 클래스 다이어그램과 다양한 메소드에 대해 논의했습니다. 우리는 또한 다양한 목록을 순회하는 방법과 함께 이러한 메소드의 구현을 보았습니다.
=> 모두를위한 Java 교육 시리즈를 보려면 여기를 방문하십시오.