Post

자바 기본8 - Collection Framework 1

컬렉션 프레임워크

Collection(컬렉션) 은 여러 객체 및 데이터들을 모아 놓은 것을 의미한다. Framework(프레임워크) 는 컬렉션을 다루기 위한 표준화된 프로그래밍 방식이다. 즉, 컬렉션 프레임워크( Collection Framework)는 객체의 집합을 다루기 위한 표준화된 프로그래밍 방식을 의미한다. Collection을 편리하게 다루기 위한 다양한 클래스(java.util 패키지)를 제공하며 다수의 데이터를 저장할 수 있는 Vector, ArrayList, HashSet 등의 클래스를 제공한다.

핵심 인터페이스

  • List : 순서가 있는 데이터의 집합. 데이터의 중복을 허용한다. (ArrayList, LinkedList, Stack, Vector 등)
  • Set - 순서를 유지하지 않는 데이터의 집합. 데이터 중복을 허용하지 않는다. (HashSet, TreeSet 등)
  • Map : 키와 값의 쌍으로 이루어진 데이터의 집합. 순서 유지X, 키 중복X, 값 중복O (HashMap, TreeMap, Hashtable, Properties 등)

List 인터페이스 메서드

List List 인터페이스

  • 순서가 있는 데이터 집합니다.
  • 데이터의 중복이 허용된다.
  • 주요 메서드 : add(), addAll(), get(), indexOf(), lastIndexOf(), listIterator(), remove(), set(), sort(), subList()

Set 인터페이스 메서드

Set Set 인터페이스

  • 순서가 없는 데이터 집합이다.
  • 중복을 허용하지 않는다.
  • 주요 메서드 : Collection 인터페이스 메서드와 동일하게 사용한다.

Map 인터페이스 메서드

  • 순서가 없는 데이터 집합이다.
  • 키 중복을 허용하지 않는다.
  • 값 중복을 허용한다.
  • 주요 메서드 : clear(), containsKey(), containsValue(), entrySet(), get(), equals(), hashCode(), isEmpty(), keySet(), put(), putAll(), remove(), size(), values()

Vector와 ArrayList

  • ArrayList는 기존의 Vector를 개선한 것으로 구현 원리가 같고 기능적으로 동일하다.
  • Vector는 자체적으로 동기화처리가 되어 있으나 ArrayList는 그렇지 않다.
  • Vector는 한번에 하나의 스레드만 접근 가능하며, ArrayList는 동시에 여러 스레드에서 작업이 가능하다.
  • List 인터페이스를 구현하므로 저장순서가 유지되고 중복을 허용한다,
  • 데이터의 저장공간으로 배열을 사용한다.
  • 필요에 따라 크기를 동적으로 조절할 수 있다.

ArrayList의 장점과 단점

  • 배열은 구조가 간단하고 데이터를 읽는데 걸리는 시간이 짧다.
  • 순차적인 데이터의 추가/삭제가 빠르다.
  • 배열 생성 후 크기를 직접 변경할 수 없다.
  • 크기 변경을 피하기 위해 충분히 큰 배열을 생성하면 메모리가 낭비된다.
  • 비순차적인 데이터의 추가/삭제에 시간이 많이 걸린다.

LinkedList

  • 배열과 달리 불연속적으로 존재하는 데이터를 연결한다.
  • 순차적인 데이터 추가/삭제는 ArrayList가 빠르지만 비순차적인 추가/삭제는 LinkedList가 빠르다.
  • 접근시간이 ArrayList에 비해 느리고 데이터가 많을수록 접근성이 떨어진다.
This post is licensed under CC BY 4.0 by the author.