[Java] 자바의 컬렉션 프레임워크(Collection Framework)에 대한 이해 (2)


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

 

답글 남기기