두 인터페이스의 데이터 구조와 개념이 서로 다르기 때문입니다.
데이터 구조의 차이
중복 요소에 대한 처리
요소의 접근 방식
메서드의 불일치
Map은 LinkedList와 유사하지 않은가...?
List<String> list = Arrays.asList("apple", "banana", "cherry");
// Iterable을 사용한 for-each 순회
for (String fruit : list) {
System.out.println(fruit);
}
// Iterator를 사용하여 순회
Iterator<String> iterator = list.iterator();
while (iterator.hasNext()) {
String fruit = iterator.next();
System.out.println(fruit);
}
Iterable은 컬렉션이 순회 가능함을 나타내는 인터페이스이며, iterator() 메서드를 통해 Iterator를 반환합니다.
Iterator는 실제 순회를 담당하는 객체로, Iterable 인터페이스의 구현체에서 반환되어 요소를 하나씩 접근하게 합니다.
Iterable은 순회 가능한 컬렉션을 의미하며, Iterator는 그 순회를 직접적으로 수행하는 역할을 합니다.
- Iterable은 iterator()이라는 메서드가 정의되어 있습니다. 이 메서드는 Iterator 객체를 반환하여 컬렉션 요소를 순회할 수 있게 합니다.
- Iterator는 Iterable 컬렉션의 요소를 직접 하나씩 탐색하고, 필요시 요소를 제거할 수 있는 도구입니다.
꼬리물기 - hasNext()를 사용 하는 이유 ? hasNext는 Exception이 날만한 상황 (가변객체에 대한 반복문 사용)에 사용됩니다. ex) RuntimeException, SqlException
Iterable을 상속받아 내부 메서드를 사용한다. Iterator()의 hasNext를 사용한것 처럼 build가 되어 돌아간다.
List<String> list = new ArrayList<>(); // List는 Collection 인터페이스를 구현
list.add("Apple");
list.add("Banana");
System.out.println(list.size()); // 출력: 2
Collections.sort(list); // 정렬
System.out.println(list); // 출력: [Apple, Banana]
Collection : 인터페이스로, 컬렉션의 기본 구조를 정의 (데이터 저장 구조).
Collections : 클래스이고, 컬렉션을 다루기 위한 유틸리티 메서드를 제공 (데이터 조작 도구).
Collections는 stream의 메서드와 유사하다..?