BackEnd 학습/Java

Java(자바) - 컬렉션 프레임워크

잉아당 2024. 1. 29. 13:38
728x90

List

  • 순서를 유지하고 저장
  • 중복 저장 가능
  • 객체를 인덱스로 관리
  • 객체의 주소를 저장
  • ArrayList
    • 제한 없이 객체 추가 가능
    • 배열과 동일한 방식(삭제 혹은 삽입시 앞 혹은 뒤 객체들을 이동 시켜 인덱스 구성 맞춤)
    • Collections.synchronizedList()메소드로 동기화 매핑 가능
  • Vector
    • synchronized 메소드로 구성되어져 있어 멀티 스레드가 동시에 실행 불가
    • 멀티 스레드 환경에서 안전하게 객체 추가 및 삭제 가능
  • LinkedList
    • 인접 객체를 체인처럼 연결해서 관리
    • 앞 뒤 링크만 변경하면 되므로 빈번한 삽입, 삭제 작업에 성능이 좋음

Set

  • 순서를 유지하지 않고 저장
  • 중복 저장 안됨
  • 하나의 null만 저장 가능
  • HashSet
    • hashCode()의 리턴값이 같고, equals() 메소드가 true를 리턴하면 동등한 객체로 판단하여 중복 저장하지 않음
    • for 문 혹은 iterator 객체를 얻어 반복해서 객체를 가져올 수 있음
    • Collections.synchronizedSet()메소드로 동기화 매핑 가능
  • TreeSet
    • 이진 트리 기반
    • 부모와 비교하여 낮은것은 왼쪽 높은것은 오른쪽에 저장
    • Comparable 인터페이스를 구현한 객체 혹은 TreeSet 생성 시 Comparator 인터페이스를 구현한 객체를 매개변수로 전달한 객체만 정렬 가능

Map

  • 키, 값으로 구성된 엔트리 저장
  • 키는 중복 저장 단됨
  • HashMap
    • hashCode()의 리턴값이 같고, equals() 메소드가 true를 리턴하면 동등한 객체로 판단하여 중복 저장하지 않음
    • Collections.synchronizedMap()메소드로 동기화 매핑 가능
  • Hashtable
    • synchronized 메소드로 구성되어져 있어 멀티 스레드가 동시에 실행 불가
    • 멀티 스레드 환경에서 안전하게 객체 추가 및 삭제 가능
  • TreeMap
    • 이진 트리 기반
    • 부모와 비교하여 낮은것은 왼쪽 높은것은 오른쪽에 저장
    • Entry 객체 저장
    • Comparable 인터페이스를 구현한 객체 혹은 TreeMap 생성 시 Comparator 인터페이스를 구현한 객체를 매개변수로 전달한 객체만 정렬 가능
  • Properties
    • Hashtable의 자식 클래스
    • 프로퍼티 파일 읽을 때 주로 사용

Stack

  • LIFO 의 구조를 가짐
  • JVM의 스택 메모리가 대표적인 예시
  • Deque로 구현 가능

Queue

  • FIFO 의 구조를 가짐
  • 스레드 풀이 대표적인 예시
  • Dequq 혹은 LinkedList로 구현 가능

'BackEnd 학습 > Java' 카테고리의 다른 글

Java(자바) - 스트림  (0) 2024.01.31
Java(자바) - Thread(스레드)  (0) 2024.01.25
Java(자바) - 제너릭  (0) 2024.01.25