๐Ÿ’ป ์ฝ”๋”ฉ ์ผ๊ธฐ : [JAVA] 'Iterator, ListIterator, Enumeration' ํŽธ

ybkยท2024๋…„ 3์›” 21์ผ

java

๋ชฉ๋ก ๋ณด๊ธฐ
34/40
post-thumbnail

๐Ÿ”” 'Iterator, ListIterator, Enumeration'์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด์ž!


๐Ÿ’Ÿ Iterator

  • ์ปฌ๋ ‰์…˜์— ์ €์žฅ๋œ ์š”์†Œ๋“ค์„ ์ฝ์–ด์˜ค๋Š” ๋ฐฉ๋ฒ•์„ ํ‘œ์ค€ํ™”ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
  • 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ํƒ€์ž…์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๋” ์•ˆ์ „ํ•ฉ๋‹ˆ๋‹ค.


๐Ÿ’Ÿ Iterator ์˜ˆ์ œ

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์™€ ListIterator

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();


    }
}
profile
๊ฐœ๋ฐœ์ž ์ค€๋น„์ƒ~

0๊ฐœ์˜ ๋Œ“๊ธ€