● iterator()
- 순서를 부여해주는 메소드
- Iterator<> 객체를 return한다.
1. hasNext()
- 다음 요소가 있다면 true, 없다면 false를 return한다.
2. next()
- 다음 요소를 return한다.
● Iterator
- 컬렉션의 종류와 상관 없이 동일한 형태의 참조 방식을 유지할 수 있게 하기 위해 만들어진 인터페이스
- 클래스 별 데이터 참조 방식을 별도로 확인할 필요도 없고, 컬렉션 클래스의 교체로 인한 영향도 줄일 수 있다.
● 컬렉션 프레임워크(Collection Framework)
- Collection
(1) List
- 중복된 값을 저장할 수 있다.
- 수정, 삭제, 추가가 자유롭다.
- 순서가 존재한다.
- ArrayList, LinkedList, ... → 사용 방법은 같지만 구현 방식에서 차이가 난다.
(2) Set
- 순서가 없다. → 인덱스번호를 쓸 수 없다.
- 중복된 값을 넣을 수 없다.
- HashSet, TreeSet, ... → 사용 방법은 같지만 구현 방식에서 차이가 난다.
실습(Iterator)
import java.util.ArrayList;
import java.util.Iterator;
public class HashSetTest {
public static void main(String[] args) {
ArrayList<String> ar = new ArrayList<String>();
ar.add("dd");
ar.add("ddd");
ar.add("dddd");
ar.add("ddddd");
Iterator<String> i = ar.iterator();
while(i.hasNext()) {
System.out.println(i.next());
}
}
}

실습(List)
1. List Interface를 이용하여 ArrayList와 LinkedList 객체 선언하기
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
public class ListTest {
public static void main(String[] args) {
List<String> alist = new ArrayList<String>(); // up casting
alist.add("안녕");
System.out.println(alist);
List<String> llist = new LinkedList<String>(); // up casting
llist.add("안녕");
System.out.println(llist);
}
}

실습(HashSet)
1. add() : 추가
import java.util.HashSet;
public class HashSetTest {
public static void main(String[] args) {
HashSet<String> fruits = new HashSet<String>();
fruits.add("사과");
fruits.add("바나나");
fruits.add("망고");
fruits.add("사과"); // 중복된 값은 추가되지 않는다.
System.out.println(fruits); // 순서 상관없이 무작위로 출력된다.
}
}

2. size() : 개수
import java.util.HashSet;
public class HashSetTest {
public static void main(String[] args) {
HashSet<String> fruits = new HashSet<String>();
fruits.add("사과");
fruits.add("바나나");
fruits.add("망고");
fruits.add("사과");
System.out.println(fruits.size());
}
}

3. Iterator
import java.util.HashSet;
import java.util.Iterator;
public class HashSetTest {
public static void main(String[] args) {
HashSet<String> fruits = new HashSet<String>();
fruits.add("사과");
fruits.add("바나나");
fruits.add("망고");
fruits.add("사과");
// iterator() : 순서를 부여해준다.
Iterator<String> iter = fruits.iterator();
// hasNext() : 다음 요소가 있다면 true, 없다면 false를 return
while(iter.hasNext()) {
// next() : 다음 요소를 return
System.out.println(iter.next());
}
for (String fruit : fruits) {
System.out.println(fruit);
}
}
}
