마지막 부분을 제외한 ArrayList
의 모든 요소를 반복해야합니다. 그래서 그러한 반복자를 만들고 싶습니다. 하지만 전체 이터레이터를 구현하는 것이 아니라, hasNext()
메서드 만 재정의해야하므로 "표준"반복기를 하위 클래스로 만들고 싶습니다. 그것을 할 방법이 있습니까?"표준"arraylist 반복자를 서브 클래스화할 수 있습니까?
1
A
답변
1
이 순회를 수행하기 위해 반복자를 수정하는 것이 이상합니다. (. 아니면 RandomAccess
목록을 가정 인덱스를 사용)
public static <T> void eachExceptLast(List<? extends T> list, Operation<T> op) {
Iterator<T> iter = list.iterator();
if (!iter.hasNext()) {
return;
}
T item = iter.next();
while (iter.hasNext()) {
op.run(item);
item = iter.next();
}
}
그러나,이 일을 더 나은 방법이있다 : 할 분명한 것은 당신이 그것을 원하는대로 "알고리즘"을 작성하는 것입니다. list.subList(0, list.size()-1)
(비어 있지 않은 목록의 경우)는 마지막 요소보다 적은 원본 목록의보기를 반환합니다. 복사를하지 않으며 Iterator.remove
을 사용할 수도 있습니다.
0
Iterator
또는 ListIterator
인터페이스를 구현하는 클래스를 만든 다음 hasNext()
메서드를 재정의 할 수 있습니다.
3
기본 반복기를 재정의하는 대신 더 나은 방법은 ArrayList
을 직접 반복하는 것입니다. ArrayList
에는 작업을 수행하는 데 도움이되는 몇 가지 방법이 정의되어 있습니다 (get(int)
및 size()
).
ArrayList
(size()
)에있는 요소의 총 개수를 가져온 다음 get()
메서드를 사용하여 각 반복에서 각 요소에 직접 액세스하는 요소를 반복하면됩니다. 코드는 다음과 같을 것이다 :
for(int i = 0; i < myList.size() - 1; i++){
element = myList.get(i);
//do something
}
지금 마음에서이 원칙, 당신은
ArrayList
을 반복하는 자신의 클래스를 만들 수 있습니다.
관련 문제
- 1. NSSavePanel을 서브 클래스화할 수 있습니까?
- 2. 개미 작업을 서브 클래스화할 수 있습니까?
- 3. ETW에서 EventSource를 서브 클래스화할 수 있습니까?
- 4. 어떻게 NSDate를 서브 클래스화할 수 있습니까?
- 5. 생성자에서 Java 객체를 서브 클래스화할 수 있습니까?
- 6. UiApplicationDelegate 프로토콜을 서브 클래스화할 수 있습니까?
- 7. 사용자 정의보기 컨트롤러를 서브 클래스화할 수 있습니까?
- 8. 금융 timeseries 클래스를 서브 클래스화할 수 있습니까?
- 9. 스토리 보드에서 인스턴스화 된 ViewController를 서브 클래스화할 수 있습니까?
- 10. MKUserLocation 파란색 점에 사용 된 MKAnnotationView를 서브 클래스화할 수 있습니까?
- 11. Coffeescript에서 클래스 정의 코드를 서브 클래스화할 수 있습니까?
- 12. Mosync : 위젯이 TimerListener 클래스를 서브 클래스화할 수 있습니까
- 13. Interface Builder로 빌드 된 뷰를 서브 클래스화할 수 있습니까?
- 14. 큐를 서브 클래스화할 때 maxlen을 설정하는 방법
- 15. 코코아에서 서브 클래스화할 때 위임 메서드 재정의
- 16. threading.Thread를 서브 클래스화할 때 super.join()을 호출해야합니까?
- 17. 서브 클래 싱 된 다른 추상 클래스를 가진 추상 클래스를 서브 클래스화할 수 있습니까? (C#)
- 18. 파이썬 3.5에서 멀티 프로세싱 대기열을 서브 클래스화할 수 없다
- 19. 배열에서 반복자를 사용할 수 있습니까?
- 20. 그냥 텍스트 대신 아이콘을 사용할 수 있도록 UIMenuController를 서브 클래스화할 수 있습니까?
- 21. 함수 외부에 부작용없이 문자열 표현을 변경하기 위해 부울을 서브 클래스화할 수 있습니까?
- 22. QTcpServer를 서브 클래스화할 때 newConnection() 신호가 출력되는 것을 어떻게 지연시킬 수 있습니까?
- 23. 파이썬에서 서브 클래스화할 때 명명 된 전용 인수
- 24. 그런 반복자를 구현하고 있습니까?
- 25. 템플릿으로 반복자를 처리 할 수 있습니까?
- 26. 반복자를 어떻게 역순으로 실행할 수 있습니까?
- 27. Foo 벡터에 반복자를 사용할 수 있습니까?
- 28. 그런 방식으로 반복자를 반환 할 수 있습니까?
- 29. for 루프는 어떻게 반복자를 빌릴 수 있습니까?
- 30. Xcode 6은 UIStoryboardSegue를 하위 클래스화할 수 없습니다.
+1 훨씬 쉽습니다. –