개발(~국비)/기술면접

02.자바 컬렉션

까만밀가루 2022. 10. 19. 18:18

자바 컬렉션의 대표 인터페이스는?

 

Java에서 Collection 이란 데이터의 집합, 그룹을 의미하며

JCF(Java Collections Framework)객체들을 한 곳에 모아 관리하고, 편하게 사용하기 위해 제공되는 환경이고,

데이터, 자료구조인 컬렉션과 이를 구현하는 클래스를 정의하는 인터페이스를 제공한다.

  • Collection에는 List, Set, Queue로 크게 구분되며 Map은 Collection 인터페이스를 상속받고 있지 않지만 Collection으로 분류된다.

 

왜 Collection을 사용하는 것일까?

  • 그 이유는 다수의 Data(데이터)를 다루는데 표준화된 클래스들을 제공해주기 때문에 DataStructure(자료구조)를 직접 구현하지 않고 편하게 사용할 수 있기 때문이다.
  • 또한 배열과 다르게 객체를 보관하기 위한 공간을 미리 정하지 않아도 되므로, 상황에 따라 객체의 수를 동적으로 정할 수 있다.
  •    이는 프로그램의 공간적인 효율성을 높여준다.

#.List

객체를 일렬로 늘어놓은 구조

객체를 인덱스로 관리하기 때문에 객체를 저장하면 자동 인덱스가 부여되고 인덱스로 객체를 검색, 삭제할 수 있는 기능 제공

순서가 있는 데이터의 집합으로 데이터의 중복을 허용

대표적인 구현체로 ArrayList와 LinkedList

 

  ○ ArrayList

     Java의 Vector를 개선한, 배열로 구현된 List이다. 즉, 데이터가 저장된 순서가 같다는 뜻이다.

     사실상 배열과 같은 자료구조이기 때문에, List의 연산 자체의 수행 시간 속도는 배열과 같다.

      - 단방향 포인터 구조로 각 데이터에 대한 인덱스(Index)를 가지고 있어 조회 기능에 성능이 뛰어남

 

  ○ LinkedList

     다음 노드의 주소를 기억하고 있는 List로, 배열에 비해 삽입과 삭제가 간단하다.

     하지만, 탐색(검색)의 경우 첫 번째 노드부터 탐색하기 때문에 속도가 느리다.

     - 양방향 포인터 구조로 데이터의 삽입, 삭제가 빈번할 경우 데이터의 위치정보만 수정하면 되기에 유용하다.

     - Stack(스택), Queue(큐), 양방향 큐 등을 만들기 위한 용도로 쓰임

 

#.Set 

중복된 값을 저장하지 않으며 순서를 유지하지 않는 데이터 집합

하나의 null만 저장 가능

  ○ HashSet

     HashMap에서 Key값이 없는 자료형 집합이라고 생각해도 무방하다.

     value(값)이 포함되어 있는지 아닌지만 관심이 있다. 순서를 보장하지 않으며, 중복 값을 허용하지 않는다.

     가장 빠른 임의 접근 속도이고, 순서를 예측할 수 없다.

 

  ○ TreeSet

     Red-Black Tree 자료구조를 사용한 Set이다.

     정렬 방법을 지정할 수 있다.

 

#.Map

키(Key),값(Value)의 쌍으로 이루어진 데이터의 집합, 데이터 순서를 보장하지 않으며 키의 중복을 허용하지 않으나 값의 중복을 허용한다.

  ○ HashMap

     가장 일반적으로 사용하는 Map이다. 

     Key값에 해시 함수를 적용하여 나온 Index에 Value를 저장하는데, 중복과 순서가 허용되지 않으며 null값이 올 수 있다.

 

  ○ HashTable

     HashMap보다는 느리지만 동기화를 지원한다.

     HashMap과 다른 점은 Key값 혹은 Value값에 null을 넣으면 컴파일 에러 발생

 

  ○ TreeMap

     Red-Black Tree 자료구조를 이용한 Map이다.

     Tree(트리) 구조이기에 어느 정도 순서를 보장한다.

     정렬된 순서대로 Key, Value를 저장하여 검색이 빠르다.

 

#.스택,큐

  ○ Stack

     직접 new 연산자로 객체를 생성하여 사용 가능

  ○ Queue

     LinkedList에 new 연산자로 객체를 생성함으로써 사용 가능


https://backendcode.tistory.com/163

 

[IT 기술 면접] Java의 Collection Framework 이란?

이번에는 Java의 Collection에 대해 정리할 것이다. ▶ Collection Framework (JCF) Java에서 Collection 이란 데이터의 집합, 그룹을 의미하며 JCF(Java Collections Framework)는 객체들을 한 곳에 모아 관리하..

backendcode.tistory.com