Java - 기본기

20. 컬렉션 프레임워크 : list, set, map 간단 하게 알아보기

TerianP 2022. 2. 7.
728x90

1. 프레임워크 vs 라이브러리

  • 라이브러리 : 다른 개발자가 미리 만들어놓은 기능을 모아 놓은 것 => 오디오 라이브러리, 통계 라이브러리(대표적으로 파이썬의 pandas, numpy)
  • 프레임워크 : 다른 개발자가 미리 만들어놓은 기능을 모아 놓은 것 + 개발하는 방식을 일정한 틀로 만들어 놓은 것
    • 개발의 자유성은 떨어졌지만, 프로그램을 작성한 방식이 비슷하기 때문에 유지보수가 좋아짐.
    • 자바에서는 대표적으로 spring 프레임워크가 있으며, spring 안에서 일정한 틀로 개발 가능 => MVC 패턴, bean 컨테이너에 객체 등록, IoC 와 DI 등

 

2. 컬렉션 프레임워크(Collection framework)

- 여러 객체(데이터)를 모아놓은 것을 의미 => 컬렉션(다수의 객체)을 다루기 위한 표준화된 프로그래밍 방식

- 컬렉션을 쉽고, 편리하게 다룰 수 있는 다양한 클래스 제공(저장, 삭제, 검색, 정렬 등)

- 여기서의 객체란 '다수의 데이터' 를 의미한다고 생각하면 됨

- java.util 패키지에 포함 && JDK 1.2 부터 제공 => 이전에도 존재는 했으나 표준화가 안되어있어서 사용하기 힘들었음.

- 다수의 데이터를 저장할 수 있는 클래스(Vector, ArrayList, HashSet)

- 이중에서 가장 중요한 것은 List, Set, Map

인터페이스 특 징
List 순서가 있는 데이터의 집합, 데이터의 중복을 허용 Ex) 대기자 명단

구현 클래스 : ArrayList, LinkedList, Stack, Vectior
Set 순서를 유지하지 않는 데이터의 집합, 데이터의 중복을 허용하지 않는다. 일종의 집합
Ex) 양의 정수집합, 소수의 집합

구현 클래스 : HashSet, TreeSet
Map 키(Key) - 값(value) 의 쌍(pair) 으로 이루어진 데이터의 집합. 순서는 유지되지 않으며, 키는 중복을 허용하지 않고, 값은 중복을 허용한다. Ex) 우편번호, 지역번호(전화번호)

구현 클래스 : HashMap, TreeMap, Hashtable, Properties
Session 저장소( key : sessionID - value : member 객체) 

 

3. List, Set, Map 인터페이스 메서드

1) List : 순서 O, 중복 O - ArrayList, Linkedlist

메서드 설 명
void add(int index, Object element)
boolean addAll(int index, Collection c)
지정된 위치(index)에 객체(element) 또는 컬렉션에 포함된 객체를 추가한다.
Object get(int index) 지정된 위치(index)에 있는 객체를 반환한다.
int indexOf(Object o)
int lastindexOf(Object o)
지정된 객체의 위치를 반환한다(왼 -> 오)
지정된 객체의 위치를 역방향(마지막)부터 반환한다(오 -> 왼)
Object remove(int index) 지정된 위치(index)에 객체(element)를 저장한다
void sort(Comparator c) 지정된 비교자(Comparator)로 List 를 정렬한다
List subList(int fromindex, int toindex) 지정된 범위 fromindex 부터 toindex까지 에 있는 객체를 반환한다

 

2) Set : 순서 X, 중복 X - HashSet => 대부분 Collection 인터페이스의 메서드와 동일

집합과 관련된 메스드를 갖고 있음. 이에 따라 컬렉션에 변화가 있으면 true, 아니면 false 를 반환

메서드 설 명
boolean addAll(Collection c) 지정된 Collection 의 객체들을 Collection 에 추가 => 합집합
boolean containsAll(Collection c) 지정된 Collection 의 객체들이 Collection 에 포함되어 있는지 확인 => 부분집합
boolean removeAll(Collection c) 지정된 Collection 에 포함된 객체를 삭제 => 차집합
boolean retainAll(Collection c) 지정된 Collection 에 포함된 객체만 남기고 나머지는 Collection 에서 삭제 => 교집합

 

3) Map : 순서X, 중복 - 키는 중복 X , 값은 중복 O - HashMap, TreeMap

- Entry 란 key - value 한 쌍을 의미

메서드 설 명
void clear() Map 의 모든 객체를 삭제
boolean containsKey(Object Key) 지정된 Key 와 일치하는 Map의 Key 객체가 있는지 확인
boolean containsValue(Object Value) 지정된 Value 와 일치하는 Map의 Value 객체가 있는지 확인
Set entrySet() Map에 저장되어 있는 Key - Value 쌍을 Map.entry 타입의 객체로 저장한 Set 으로 반환한다.
boolean equals(Object o) 지정한 key 객체에 대응하는 value 객체를 찾아서 반환한다.
set keySet() Map 에 저장된 모든 Key 객체를 반환한다
Object put(Object key, Object value) Map 에 value 객체를 key 객체에 연결(mapping)하여 저장한다
void putAll(Map t) 지정된 Map 의 모든 key - value 쌍을 추가한다
Object remove(Object key) 지정한 Key 객체와 일치하는 Key - value 객체를 삭제한다
int size() Map 에 저장된 key - value 쌍의 개수를 반환한다
Collection values() Map 에 저장된 모든 value 객체를 반환한다

 

댓글