개발/Java

JAVA_16_컬렉션 프레임워크

onivv 2024. 7. 16. 14:05
반응형

#1 컬렉션 프레임워크

  • 자바는 자료구조를 미리 구현하여 java.util 패키지에서 컬렉션 프레임워크를 제공
  • 기존에 존재했던 자료 구조에 인터페이스로 설계된 기능을 클래스를 통해 제공하여 데이터 관리에 용이한 자료 구조 객체를 구조화한 것
    • 컬렉션: 기존의 List, Map, Set 등의 자료 구조
    • 프레임워크: 클래스와 인터페이스를 묶어 놓은 개념
  • List와 Set 인터페이스는 Collection 인터페이스를 상속받지만, Map 인터페이스는 구조상 차이로 별도로 정의
인터페이스 설명 특징 대표 구현 클래스
List 순서가 있는 데이터의 집합 데이터 중복 oo ArrayList, LinkedList, Vector
Set 순서를 유지하지 않는 데이터의 집합 데이터 중복 xx HashSet, LinkedHashSet
Map 키(key) - 값(value)
쌍으로 이뤄진
데이터의 집합
순서 유지 xx
키 중복 xx
값 중복 oo
HashMap, LinkedHashMap, Properties

 

#2 제네릭

  • 자바의 제네릭<>은 데이터의 타입을 일반화한다는 것을 의미
  • 클래스나 메서드 정의 시 일반화하여 사용할 데이터 타입을 컴파일할 때 미리 지정
    • 타입 검사나 변환과 같은 번거로운 작업 생략 가능
    • 클래스나 메서드 내부에 사용될 데이터 타입의 안정성 높임

 

#3 List 컬렉션

  • 배열과 비슷하게 index로 객체를 관리
  • 배열과는 다르게 크기의 제한이 없으며 삽입, 삭제, 변경의 기능이 자유로움
  • List가 제공하는 주요 메서드
메서드 기능
void add(E e) 데이터를 순차적으로 삽입
void add(int index, E e) 원하는 index 위치에 삽입
void set(int index, E e) 원하는 index 위치에 값 변경
E get(int index) 선택된 index 위치의 값 반환
void remove(int index) 선택된 index 위치의 값 삭제
void clear() 모든 데이터 삭제
int size() 저장된 데이터의 개수 반환
boolean contains(Object o) 데이터 존재 여부 확인

 

▶ ArrayList

  • 데이터를 순차적으로 저장
  • 데이터가 삽입될 때마다 크기가 증가하고, 배열을 삭제하면 공간이 감소
  • index를 기준으로 값을 삽입하거나 추출
  • 데이터를 출력하거나 검색할 경우에 사용하면 좋음

▶ LinkedList

  • Node 객체를 기반으로 데이터를 저장
  • Node 객체는 데이터와 자신 다음에 올 데이터의 주소를 값으로 가짐
  • 데이터의 삽입과 삭제가 빈번할 경우에 사용하면 좋음

 

#4 Set 컬렉션

▶ 내부 클래스란?

  • List 컬렉션과 다르게 객체의 저장 순서를 저장하지 않으며, 데이터 중복 허용 xxx
  • 데이터를 저장할 때 index를 부여하지 않아, 데이터가 입력된 순서로 출력된다는 보장 xx

▶ HashSet, TreeSet, LinkedHashSet

 

#5 반복자 Iterator

  • Iterator<E>는 List 컬렉션에서 제공하는 인터페이스로 사전적인 의미로는 '반복하다'라는 의미
  • List 컬렉션의 요소를 순회하여 하나씩 추출하는 데 사용
  • Iterator 주요 메서드
메서드 기능
boolean hasNext() 다음 순회할 데이터 유무 확인,
가져올 객체가 있으면 true, 없으면 false 반환
E next() 다음 위치의 데이터로 이동하여 반환

 

#6 Map 컬렉션

  • List, Set 컬렉션과 달리 Map Interface가 별도로 존재하며 데이터를 List 계열의 컬렉션과 다르게 처리
  • Map은 key 중복 허용 xx, value 중복 허용 oo
  • 만약 Key가 중복된다면 기존에 있던 Key에 해당하는 Value값이 마지막으로 등록된 값으로 치환
  • Map 컬렉션의 클래스 : HashMap, TreeMap, LinkedHashMap
  • Map 컬렉션의 주요 메서드
메서드 기능
void put(K key, V value) key에 대응하는 value 저장
E get(K key) key에 대응하는 value 반환
boolean containsKey(K  key) key 존재 여부 검색
boolean containsValue(V value) value 존재 여부 검색
Set<E> keySet() 모든 key를 Set 컬렉션에 저장하여 반환
Set<Map.Entry> entrySet() 모든 Map.Entry 객체를 Set에 담아서 반환

 

▶ HashMap<K, V>

  • 해싱(hashing)을 통해 Key의 중복 여부를 판단
  • 즉, key로 지정된 객체의 hashCode와 equals 메서드를 이용해 동일 여부를 판단
  • < 선언 >
    • Map <KEY, V> map = new HashMap<KEY, V>();
    • Map <KEY, V> map = new HashMap<>();

※ HashSet/HashMap

   : 객체 데이터를 value 또는 Key로 할 경우,

     중복 객체 체크를 위해 해당 객체의 hashCode()와 equals() 메서드를 Override하여 구현해야 함

반응형

'개발 > Java' 카테고리의 다른 글

JAVA_18_Thread  (1) 2024.07.16
JAVA_17_람다식  (2) 2024.07.16
JAVA_15_기본 API 클래스  (1) 2024.07.16
JAVA_14_예외 처리  (1) 2024.07.16
JAVA_13_내부 클래스  (0) 2024.07.16