바로가기 >> [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;
}
}
}