
- ์ปฌ๋ ์ ์ ์ ์ฅ๋ ์์๋ค์ ์ฝ์ด์ค๋ ๋ฐฉ๋ฒ์ ํ์คํํ ๊ฒ์ ๋๋ค.
Iterator์ธํฐํ์ด์ค์๋ ์์์ ์ ๊ทผํ๋ ๊ธฐ๋ฅ์ ์ ์ํ๊ณ ์์ต๋๋ค.Collection์ธํฐํ์ด์ค์๋Iterator๋ฅผ ๋ฐํํ๋iterator(Iteratro๋ฅผ ๊ตฌํํ ํด๋์ค์ ์ธ์คํด์ค)๋ฅผ ์ ์ํ๊ณ ์์ต๋๋ค.Set์ธํฐํ์ด์ค์ ์์๋ฅผ ์ฝ์ด์ฌ ๋ ์ฃผ๋ก ์ฌ์ฉํฉ๋๋ค.
public interface Iterator{
boolean hasNext();
Object next();
void remove();
}
hasNext() : ์ฝ์ด ์ฌ ์์๊ฐ ๋จ์์๋์ง ํ์ธํฉ๋๋ค.(true/false)next() : ๋ค์ ์์๋ฅผ ์ฝ์ด ์ต๋๋ค. next() ํธ์ถ ์ hasNest() ํธ์ถํด์ ์ฝ์ด ์ฌ ์์๊ฐ ์๋์ง ํ์ธํ๋ ๊ฒ์ด ์์ ํฉ๋๋ค.remove() : next()๋ก ์ฝ์ด ์จ ์์๋ฅผ ์ญ์ ํฉ๋๋ค. public interface Collection{
public Iterator iterator();
}
iterator() : Collection ์ธํฐํ์ด์ค์ ์์์ธ List, Set์๋ ํฌํจ๋ฉ๋๋ค.Iterator it = map.entrySet().iterator(); : Map ์ธํฐํ์ด์ค์์๋ map.entrySet()์ ํตํด ์ป์ Set์ธ์คํด์ค์ iterator()๋ฅผ ํธ์ถํด์ Iterator ์ธ์คํด์ค๋ฅผ ์ป์ต๋๋ค.๐ข ์ฐธ์กฐ๋ณ์์ ํ์ ์ ArrayListํ์ ๋ณด๋ค Listํ์ ์ ์ฌ์ฉํ๋ ๊ฒ์ด ๋ ์์ ํฉ๋๋ค.
import java.util.ArrayList;
import java.util.Iterator;
public class C02Iterator {
public static void main(String[] args) {
// Collection list = new ArrayList(); //๊ฐ๋ฅ
// Collection list = new HashSet(); //๊ฐ๋ฅ
// HashSet list = new HashSet(); //๊ฐ๋ฅ
ArrayList list = new ArrayList(); //๊ฐ๋ฅ
list.add("1");
list.add("2");
list.add("3");
list.add("4");
list.add("5");
Iterator it = list.iterator();
while (it.hasNext()){
Object obj = it.next();
System.out.print(obj); //12345
}
}
}
์ฌ๊ธฐ์ while๋ฌธ์
for(int i = 0; i< list.size(); i++){ Object obj = list.get(i); System.out.println(obj); }์ด๋ ๊ฒ ์์ ํ์ ๋, ๊ฐ์ ๋๊ฐ์ด 12345๊ฐ ๋์ต๋๋ค. ํ์ง๋ง ๋ง์ฝ์ ArrayList๋ฅผ HashSet์ผ๋ก ๋ฐ๊ฟ ๊ฒฝ์ฐ์๋ ์ค๋ฅ๊ฐ ์๊น๋๋ค. ๊ทธ ์ด์ ๋ get( )๋ HashSet()์ ๋ด์ฅ๋ ๋ฉ์๋์๋๊ธฐ ๋๋ฌธ์ ๋๋ค.
Enumeration์ Iterator์ ๊ตฌ๋ฒ์ ์
๋๋ค.
ListIterator๋ Iterator์ ์๋ฐฉํฅ ์กฐํ๊ธฐ๋ฅ์ ์ถ๊ฐํ ๊ฒ์
๋๋ค.(List๋ฅผ ๊ตฌํํ ๊ฒฝ์ฐ์๋ง ์ฌ์ฉ๊ฐ๋ฅ)
๐ฆ ListIterator
import java.util.ArrayList;
import java.util.ListIterator;
public class C03ListIterator {
public static void main(String[] args) {
ArrayList list = new ArrayList();
list.add("1");
list.add("2");
list.add("3");
list.add("4");
list.add("5");
ListIterator it = list.listIterator();
while (it.hasNext()){
System.out.println(it.next()); //12345
}
System.out.println();
while (it.hasPrevious()){
System.out.println(it.previous()); //54321
}
System.out.println();
}
}