각진 세상에 둥근 춤을 추자

[Java] 컬렉션 프레임워크 본문

Java

[Java] 컬렉션 프레임워크

circle.j 2022. 9. 28. 23:42

 

프로그램의 기능을 효과적으로 구현하기 위하여 프로그램을 개발할 때 사용하는 자료를 어떤 구조로 관리할 것인가는 중요하다.

이때 사용하는 것을 자료 구조(data structure)라고 한다. 

자료 구조는 프로그램 실행 중에 메모리에 자료를 유지, 관리하기 위해 사용한다. 

자바에서는 필요한 자료 구조를 미리 구현하여 java.util 패키지에서 제공하고 있는데, 이를 컬렉션 프레임워크(collection framework)라고 한다. 

 

 

컬렉션 프레임워크의 전체 구조는 Collection 인터페이스와 Map 인터페이스 기반으로 이루어져 있다.

 

  • Collection 인터페이스: 하나의 자료를 모아서 관리하는 데 필요한 기능을 제공
  • Map 인터페이스: 쌍(pair)으로 된 자료를 관리하는 데 유용한 기능을 제공

 


1. Collection 인터페이스

 

Collection 인터페이스에는 List 인터페이스와 Set인터페이스가 있다. 

 

  • List 인터페이스: 순서가 있는 자료 관리, 중복 허용 (구현 클래스: ArrayList, Vecitor, LinkedList, Stack, Queue...)
  • Set 인터페이스: 순서가 정해지지 않음, 중복 허용X, (구현 클래스: HashSet, TressSet...)

 

Collection 인터페이스에 선언된 메서드는 대표적으로 다음과 같다. 

 

메서드 설명
boolean add (E e) Collection에 객체를 추가한다.
void clear() Collection의 모든 객체를 제거한다.
lterator<E> iterator Collection을 순환할 반복자(lterator)를 반환한다.
boolean remove(Object o) Collection에 매개변수에 해당하는 인스턴스가 존재하면 제거한다.
int size() Collection에 있는 요소의 개수를 반환한다. 

 

 


2. Map 인터페이스

 

Map 인터페이스는 하나가 아닌 쌍(Pair)으로 되어 잇는 자료를 관리하는 메서드들이 선언되어 있다. 

key-value 쌍으로 표현하는데 이때 키 값은 중복될 수 없다. 

예를 들어 어떤 사람의 정보(학번, 이름, 나이, 취미, 특기...)를 정리할 때, 중복될 수 없는 key는 학번으로 두고, 나머지 값은 value 값으로 둔다. 

이렇게 key-value 쌍으로 된 자료를 관리할 때 Map을 유용하게 사용할 수 있다.

 

Map은 기본적으로 검색용 자료 구조이다. 

즉, key 값을 알고 있을 때 value 값을 찾을 수 있다. 

Map 인터페이스에 선언된 메서드 중 주요 메서드는 다음과 같다.

 

메서드 설명
V put(K key, V value) key에 해당하는 value 값을 map에 넣는다.
V get(K key) key에 해당하는 value 값을 반환한다.
boolean isEmpty() Map이 비었는지 여부를 반환한다.
boolean containsKey(Object key) Map에 해당 key가 있는지 여부를 반환한다.
boolean containsValue(Object value) Map에 해당 value가 있는지 여부를 반환한다.
Set keyset() key 집합을 Set으로 반환한다.
Collection values() value를 Collection으로 반환한다.
V remove(key) key가 있는 경우 삭제한다.
boolean remove(Object key, Object value) key가 있는 경우 key에 해당하는 value가 매개변수와 일치할 때 삭제한다. 

 

 

  예제  

 

간단한 회원 관리 프로그램을 만들어 컬렉션 프레임워크에 제공하는 각 클래스를 실습해 본다. 

회원 관리 프로그램에서 회원 추가, 회원 삭제, 전체 회원 정보 출력 기능을 구현해 본다. 

 

package collection;

public class Member {

	private int memberId;
	private String memberName;
	
	public Member(int memberId, String memberName) {
		this.memberId = memberId;
		this.memberName = memberName;
	}
	
	
	public int getMemberId() {
		return memberId;
	}

	public void setMemberId(int memberId) {
		this.memberId = memberId;
	}

	public String getMemberName() {
		return memberName;
	}

	public void setMemberName(String memberName) {
		this.memberName = memberName;
	}


	@Override
	public String toString() {
		return memberName + " 회원님의 아이디는 " + memberId + "입니다.";
	}
	
}

 

 

 

'Java' 카테고리의 다른 글

[Java] LinkedList 클래스  (0) 2022.09.29
[Java] List 인터페이스  (0) 2022.09.29
[Java] 제네릭(Generic)  (0) 2022.09.28
[Java] Class 클래스  (0) 2022.09.28
[Java] 근의 공식  (0) 2022.09.26