바로가기 >> [Java] 자바의 컬렉션 프레임워크(Collection Framework)에 대한 이해 (1)
컬렉션에 저장된 데이터를 일관된 형식으로 얻어오기 위한 방법으로 2가지 인터페이스를 사용한다. java.util.Enumeration 과 java.util.Iterator 이다.
Enumeration
List 계열 중 Vector 클래스에서 사용한다.
Enumeration 인터페이스에 정의된 메소드
boolean hasMoreElements(); Object nextElement();
Enumeration 를 이용한 Vector 데이터 처리
import java.util.Enumeration; import java.util.Vector; import com.test08.Person; public class Test { public static void main(String[] args) { Vector<Person> v = new Vector<Person>(); v.add(new Person("정대만", 23, "북산")); v.add(new Person("서태웅", 22, "북산")); v.add(new Person("강백호", 22, "북산")); // Enumeration 을 이용한 데이터 처리 Enumeration<Person> enu = v.elements(); while (enu.hasMoreElements()) { Person p = enu.nextElement(); String name = p.getName(); int age = p.getAge(); String address = p.getAddress(); System.out.println(name + " " + age + " " + address); } } }
Vector 클래스의 elements() 메소드를 사용하여 제네릭 형식의 Enumeration 타입을 얻는다. 컬렉션에 저장된 데이터를 얻기 전에 hasMoreElements() 메소드를 이용해서 데이터가 존재하는지 검사한다. true 인 경우 nextElement() 메소드를 이용해서 데이터를 얻는다.
Iterator
Set 계열과 List 계열의 컬렉션에서 사용한다.
Iterator 인터페이스에 정의된 메소드
hasNext() next()
Enumeration 를 이용한 데이터 처리
import java.util.ArrayList; import java.util.Iterator; import com.test08.Person; public class Test01 { public static void main(String[] args) { ArrayList<Person> list = new ArrayList<Person>(); list.add(new Person("정대만", 23, "북산")); list.add(new Person("서태웅", 22, "북산")); list.add(new Person("강백호", 22, "북산")); Iterator<Person> ite = list.iterator(); while (ite.hasNext()) { Person p = ite.next(); String name = p.getName(); int age = p.getAge(); String address = p.getAddress(); System.out.println(name + " " + age + " " + address); } } }
ArrayList 클래스의 iterator() 메소드를 사용하여 제네릭 형식의 Iterator 타입을 얻는다. 컬렉션에 저장된 데이터를 얻기 전에 hasNext() 메소드를 이용해서 데이터가 존재하는지 검사한다. true 인 경우 next() 메소드를 이용해서 데이터를 얻는다.
Map 계열의 데이터 처리
Map 계열은 데이터를 이름/값 쌍으로 저장하는 자료구조이다. 이름을 이용하여 원하는 값을 얻을 수 있으며, 다른 어떤 자료구조보다 빠른 검색이 가능하다.
Map 컬렉션 사용 형식
컬렉션<이름,값> 변수명 = new 컬렉션<이름, 값>();
HashMap 을 이용한 데이터 처리
import java.util.HashMap; public class Test02 { public static void main(String[] args) { HashMap<String, String> map = new HashMap<String, String>(); map.put("name", "정대만"); map.put("age", "23"); map.put("address", "북산"); System.out.println("이름 : " + map.get("name")); System.out.println("나이 : " + map.get("age")); System.out.println("주소 : " + map.get("address")); } }
Enum
자바의 enum 클래스는 열거형 타입(enumeration)을 의미하는 특수한 클래스이다.
enum 사용예1
import java.util.HashMap; public class Test03 { public enum Season { SPRING, SUMMER, FALL, WINTER } public static void main(String[] args) { HashMap<Season, String> map = new HashMap<Season, String>(); map.put(Season.SPRING, "봄"); map.put(Season.SUMMER, "여름"); map.put(Season.FALL, "가을"); map.put(Season.WINTER, "겨울"); System.out.println(map.get(Season.SPRING)); System.out.println(map.get(Season.SUMMER)); System.out.println(map.get(Season.FALL)); System.out.println(map.get(Season.WINTER)); } }
enum 사용예2
public class Test04 { enum Season { SPRING, SUMMER, FALL, WINTER } public static void main(String[] args) { Season coin = Season.WINTER; switch (coin) { case SPRING: System.out.println("봄"); break; case SUMMER: System.out.println("여름"); break; case FALL: System.out.println("가을"); break; case WINTER: System.out.println("겨울"); break; } } }