Java의 Iterator, 다른 클래스와 함께 사용해보기!
안녕, 여러분! 오늘은 Java에서 정말 재밌는 Iterator를 가지고 노는 방법을 소개할게요. 아, 물론 그냥 반복문 쓰면 편하지! 근데, 우리 좀 더 "프로그래머다움"을 즐겨보는 거 어때요? 특히, 다른 클래스랑 엮어서 쓰면 Iterator가 얼마나 재밌는지 알게 될 거예요. 이제 커피 한 잔 준비하고 천천히 따라와요~ 😊
Iterator란?
Iterator는 말 그대로 "반복자"예요. "반복문 돌리는데 굳이 이걸 왜 써?"라고 묻는다면… 음, 좀 더 "객체지향"적이고 깔끔한 코드를 짜기 위해서랄까? 사실 Java에서는 컬렉션(List, Set, Map 등등) 안의 데이터를 순회하는 데 꼭 필요한 친구예요. 쉽게 말하면, 이 친구가 "다음 요소가 있어?" "있으면 가져올게!"를 계속 반복하며 데이터를 하나씩 꺼내주는 거죠.
Iterator 기본 사용법
Iterator를 사용하는 기본 코드, 먼저 보여줄게요. 아주 간단하니까 겁먹지 말고 구경해봐요!
import java.util.ArrayList;
import java.util.Iterator;
public class BasicIteratorExample {
public static void main(String[] args) {
ArrayList<String> fruits = new ArrayList<>();
fruits.add("Apple");
fruits.add("Banana");
fruits.add("Cherry");
Iterator<String> iterator = fruits.iterator();
while (iterator.hasNext()) {
System.out.println(iterator.next());
}
}
}
"오, 그냥 for-each 쓰는 거랑 별 차이 없네?" 맞아요! 하지만 오늘의 주제는 다른 클래스와 함께 Iterator를 쓰는 방법이니까, 여기서 더 나아가 봅시다.
다른 클래스와 엮어서 사용하기
자, 이제 우리가 만든 클래스에서 Iterator를 활용하는 방법을 보여줄게요. 가령, 우리가 동화 속 마법의 주문을 관리하는 클래스가 있다고 상상해 봐요. (음, 너무 귀엽지 않나요?) 이 클래스에 들어있는 주문들을 순회하는 코드를 짜보는 거죠.
1단계: 주문 클래스 만들기
import java.util.ArrayList;
import java.util.Iterator;
class MagicBook implements Iterable<String> {
private ArrayList<String> spells;
public MagicBook() {
spells = new ArrayList<>();
}
public void addSpell(String spell) {
spells.add(spell);
}
@Override
public Iterator<String> iterator() {
return spells.iterator();
}
}
2단계: 주문을 읽어보는 마법사
public class MagicBookExample {
public static void main(String[] args) {
MagicBook magicBook = new MagicBook();
magicBook.addSpell("Abracadabra");
magicBook.addSpell("Wingardium Leviosa");
magicBook.addSpell("Expelliarmus");
for (String spell : magicBook) {
System.out.println("Casting spell: " + spell);
}
}
}
이렇게 응용해봐요!
Iterator를 이렇게 쓰면 진짜 응용할 수 있는 분야가 넓어요. 가령, 게임 개발을 한다고 가정하면 Player 클래스 안에 Inventory라는 리스트를 만들고, 그 리스트를 순회하면서 아이템을 사용하는 코드를 짤 수 있겠죠.
import java.util.ArrayList;
import java.util.Iterator;
class Inventory implements Iterable<String> {
private ArrayList<String> items;
public Inventory() {
items = new ArrayList<>();
}
public void addItem(String item) {
items.add(item);
}
@Override
public Iterator<String> iterator() {
return items.iterator();
}
}
public class Player {
public static void main(String[] args) {
Inventory inventory = new Inventory();
inventory.addItem("Sword");
inventory.addItem("Shield");
inventory.addItem("Potion");
System.out.println("Player's Inventory:");
for (String item : inventory) {
System.out.println("- " + item);
}
}
}
중요한 건 뭐다? 창의력!
Iterator를 사용하면 그냥 데이터 순회하는 게 아니라, 클래스 설계를 조금 더 객체지향적으로 확장할 수 있어요. 예를 들어, Iterator를 커스터마이징해서 특정 조건에 맞는 요소만 반환하도록 만들 수도 있죠. 프로그래밍은 결국 문제를 해결하는 창의적인 도구니까, 재미있게 응용해 보세요. 😊
그럼 다음에 또 재미있는 주제로 만나요~! 여러분의 피드백이 저에겐 마법의 주문이니까, 꼭 댓글로 남겨줘요!
'개발 > Java' 카테고리의 다른 글
[Java] Java17 이 왔다!! 무조건 이건 알아야한다니깐!!! (0) | 2024.11.29 |
---|---|
[Java] Array를 제대로 알고 사용해봐요! (2) | 2024.11.28 |
[Java&Javascript] 문자를 byte 로 계산하는 함수는 이렇게 만들어요. (0) | 2024.11.27 |
[Java] List 에 대해 모든 것을 알아보고 비교해보자!! (1) | 2024.11.26 |
[Java] static, final 에 대해 차근차근 알아보자! (1) | 2024.11.25 |
댓글