본문 바로가기
Backend/Java

Java - 컬렉션 (Collection)

by 퐁고 2023. 2. 23.
반응형

컬렉션 (Collection)

  • Java에서는 다양한 자료형의 데이터를 처리하기 위한 컬렉션 프레임워크를 제공, 이를 사용하여 데이터의 저장, 검색, 삭제 등의 작업을 보다 효율적으로 처리할 수 있다.

인터페이스 분류

Collection

  • List
    • ArrayList, Vector, LinkedList
    • 순서를 유지하고 저장
    • 중복 저장 가능
  • Set
    • HashSet, TreeSet
    • 순서를 유지하지 않고 저장
    • 중복 저장 안됨

Map

  • HashMap, Hashtable, TreeMap, Properties
  • 키와 값으로 구성된 엔트리 저장
  • 키는 중복 저장 안됨

List 컬렉션

  • List는 순서가 있는 데이터의 모음, 중복된 데이터를 허용하며, 인덱스를 사용하여 데이터에 접근할 수 있다, ArrayList, LinkedList, Vector 등의 구현체가 있다.

객체 추가

  • add(값) - 주어진 객체를 맨 뒤에 추가
  • add(인덱스, 값) - 주어진 인덱스에 객체를 추가
  • set(인덱스, 값) - 주어진 인덱스에 객체을 변경

객체 검색

  • contains(값) - 주어진 객체가 저장되어 있는지 조사
  • get(인덱스) - 주어진 인덱스의 저장된 객체를 읽음
  • isEmpty() - 컬렉션이 비어있는지 조사
  • size() - 전체 객체 수

객체 삭제

  • clear() - 저장된 모든 객체 삭제
  • remove(인덱스) - 주어진 인덱스에 저장된 객체 삭제
  • remove(값) - 저장된 객체 삭제

ArrayList

ArrayList<E> list = new ArrayList<E>(); // <E>에 저장된 타입의 객체만 저장
ArrayList<E> list = new ArrayList<>();
ArrayList list = new ArrayList(); // 모든 타입 객체 저장

// 동기화
ArrayList<E> list = Collections.synchronizedList(new ArrayList<E>());

Set 컬렉션

  • Set은 중복을 허용하지 않는 데이터의 모음, 순서가 보장되지 않으며, 데이터를 추가하거나 삭제할 때는 인덱스를 사용할 수 없다. HashSet, TreeSet 등의 구현체가 있다.
  • 수학의 집합에 비유될 수 있다.

객체 추가

  • add(값) - 성공적으로 저장하면 true 리턴 실패하면 false 리턴

객체 검색

  • contains(값) - 주어진 객체가 저장되어 있는지 조사
  • isEmpty() 컬렉션이 비어있는지 조사
  • size() - 객체 수 리턴
  • Iterator<E> iterator() - 저장된 객체를 한 번씩 가져오는 반복자 리턴

객체 삭제

  • clear() - 객체 전체 삭제
  • remove(값) - 주어진 객체 삭제

HashSet

HashSet<E> set = new HashSet<E>(); // <E>에 지정된 타입 객체만 저장
HashSet<E> set = new HashSet<>();
HashSet set = new HashSet(); // 모든 타입 객체 저장

// 동기화
HashSet<E> set = Collections.synchronizedSet(new HashSet<E>());

Map

  • Map은 키-값 쌍으로 이루어진 데이터의 모음, 중복된 키는 허용하지 않으며, 값은 중복될 수 있다. HashMap, TreeMap, Hashtable 등의 구현체가 있다.

객체 추가

  • put(키, 값) - 주어진 키와 값을 추가

객체 검색

  • containsKey(키)
  • containsValues(값)
  • Set<Map.Entry<키,값>>entrySet() - Set에 담아 리턴
  • get(키) - 주어진 키의 값을 리턴
  • isEmpty() - 컬렉션이 비어있는지 검사
  • Set<키> keySet() - 모든 키를 Set에 담아 리턴
  • size() - 저장된 키의 총 수를 리턴
  • Collection<값> valuse() - 저장된 모든 값 Collection에 담아 리턴

객체 삭제

  • clear() - 모든 Map.Entry 삭제
  • remove(키) - 주어진 키와 일치하는 Entry 삭제

HashMap

HashMap<K,V> map = new HashMap<K,V>();
HashMap<K,V> map = new HashMap<>();

// 동기화
HashMap<K,V> map = Collections.synchronizedMap(new HashMap<K,V>());

Stack

  • 후입 선출 구조로써 나중에 들어온 객체가 가장 먼저 나가는 자료 구조 - LIFO
Stack<E> stack = new Stack<E>();
Stack<E> stack = new Stack<>();

객체 추가

  • push() - 주어진 객체를 스택에 삽입

객체 삭제

  • pop() - 스택에 가장 마지막 객체를 삭제한 후 삭제한 객체를 리턴한다.

객체 검색

  • peek() - 가장 마지막 객체를 리턴한다.
  • search() - 파라미터로 들어온 객체의 인덱스 위치를 반환
  • empty() - 컬렉션이 비어있는지 조사

Queue

  • 선입 선출 구조로써 먼저 들어온 객체가 가장 먼저 나가는 자료 구조 - FIFO
Queue<E> queue = new Queue<E>();
Queue<E> queue = new Queue<>();

'Backend > Java' 카테고리의 다른 글

Java - 5분만에 하는 JDK 설치 및 환경 변수 설정  (0) 2023.08.02
Java - 스레드 (Thread)  (0) 2023.02.23
Java - 예외  (0) 2023.02.22
Java - 익명 클래스, 익명 객체  (0) 2023.02.22
Java - 중첩 클래스  (0) 2023.02.22

댓글