Java Collection

배열 뿐만 아니라 데이터를 저장하고 가공하기 위한 객체가 존재한다. 기본 배열보다 더 많은 기능과 유용한 사용성을 보이는 Collection에 대해 학습하자.

우리는 지금까지 데이터를 저장하기 위해서 배열을 사용했다. 배열에 각종 자료형 변수를 담을 수도 있고, 심지어 클래스도 담을 수 있다

//100개의 HelloClass 객체를 담을 수 있는 배열
HelloClass arr[] = new HelloClass[100];

하지만 배열에는 몇가지 한계점이 존재한다.

  1. 배열의 개수가 정해지면 수정이 불가능하다는 점 프로그램을 실행하는 동안arr.length는 항상 100이다.
  2. 배열의 중간 원소가 삭제되면 중간이 비어있는 형태가 된다. 순차적인 배열을 만들기 위해 배열의 원소를 옮기는 작업을 해야한다. 배열 삭제
  3. 배열 중간에 원소를 삽입하고 싶으면 위와는 반대로 원소를 옮기는 작업을 하고 값을 삽입해야한다.



Collection

Collectionjava.util.Collection 배열의 이런 한계점을 극복하고 더 발전된 방식으로 데이터를 저장할 수 있는 클래스의 모음이다.

1. ArrayList (배열 리스트)

  • 배열 처럼 사용할 수 있는 리스트
  • 선형(linier) 구조를 가지고 있다.
  • 검색 속도가 굉장히 빠르다.
  • 배열과 마찬가지로 index 로 관리된다.

2. LinkedList (연결 리스트)

  • 검색 속도는 ArrayList보다 느리다.
  • 추가, 삭제가 빈번하게 처리할때 사용한다.
  • 게임에 사용하기 적합하다.
  • 선형구조를 가지고 있다.
  • ArrayList와 굉장히 비슷한 구조를 갖는다.

3. HashMap (해쉬 맵)

  • key + value 구조로 관리된다.
  • Tree 구조를 갖는다.
        0
       / \
      0   0
     /\   /\
    0  0 0  0
    
  • 검색에서 속도가 굉장히 빠르다. (선형 검색은 검색의 속도를 장담하지 못한다.)
  • 데이터를 전부 꺼낼때 불편함이 있다.

4. TreeMap (트리 맵)

  • sorting 을 적용할 수 있다. (기본 라이브러리로 제공)

Comments