예제)
⤷ Iterator는 일회용이다. 한번 다 읽고나면 while을 똑같이 여러개 복사해도 while 조건이 false가 되어 안읽어 진다.
⤷새로운 객체 얻어와서 다시 돌려본 것
⤷for문을 돌려봐도 똑같이 나온다
⤷그러나 ArrayList에서 HashSet으로 바꾸면 for문이 돌아가지 않는다. 이유는 HashSet은 get()함수가 없기 때문이다.
따라서 Collection에 List, Set 이 있지만 불러오는 함수가 다 다르기 때문에 Iterator를 쓰면 나중에 ArrayList가 HashSet이 되어도 같은 방법으로 불러올 수 있다.
⤷ 그렇다면 처음부터 Collection으로 하면 더 편하다! list 우클릭 후 Refactor → Rename → c로 하면 밑에 list 쓰인 부분 다 c로 바뀜! 참고!
만약 내가 hashSet()을 TreeSet으로 바꿀 때
Collection c = new HashSet(); //에서 Collection c = new TreeSet(); //으로만 해주면 된다.
아래 코드는 Collection을 활용해서 만든 코드니까 안바꿔도 되게 된다!
Iterator it = map.entrySet().iterator();
// 이 한줄의 코드는 아래 두줄의 코드와 같다
set eSet = map.entrySet(); //entretSet()으로 Set을 얻은 다음에
Iterator it = eSet.iterator(); //iterator()로 Iterator 객체 얻음