JAVA

컬렉션 프레임워크

JUN0126 2021. 7. 10. 21:32

컬렉션 프레임워크란?

 - 객체들을 효율적으로 추가, 삭제, 검색 할 수 있도록 java.util 패키지에 컬렉션과 관련된 인터페이스와 클래스들을 포함 한 것

 - 자바 컬렉션은 객체를 수집해서 저장하는 역할

 

컬렉션 프레임워크 구조

사진 참조 : https://coding-factory.tistory.com/550

 

[Java] 자바 컬렉션 프레임워크(List, Set, Map) 총정리

컬렉션 프레임워크란? 배열을 사용하다 보면 여러가지 비효율적인 문제가 생깁니다. 가장 큰 문제점은 크기가 고정적이라는 것입니다. 배열의 크기는 생성할 때 결정되며 그 크기를 넘어가게

coding-factory.tistory.com

Collection 유형

• List 인터페이스 (ArrayList, Vector, LinkedList 클래스 들은 List를 상속받아 구현한 클래스)

 - 순서를 유지하고 저장, 중복 저장 기능

 - List<G> list = new [ ArrayList | Vector | LinkedList ] <G>();

 

   -1) ArrayList

       - 객체가 인덱스로 관리되며 객체 추가 및 삭제 시 인덱스가 1씩 추가되거나 삭제되어 검색에서는 좋지 않다

       - Arrays.asList(T...a) 메소드를 사용하여 고정된 객체로 구성된 ArrayList를 생성할 수 있다.

 

    -2) Vector

        - ArrayList와 비슷하나 다른점은 동기화된 메소드로 구성 되어 있어 하나의 스레드가 실행을 완료해야하만 다른 스레드를 실행 할 수 있다.

 

    -3) LinkedList

         - ArrayList와 사용방법은 동일하지만 내부적 구조가 다르다, ArrayList와 달리 객체 인접 참조를 링크하여 관리함으로 특정 인덱스의 객체를 제거하면 앞뒤 링크만 변경되고 나머지 링크는 변경되지 않는다.

         - 객체의 삭제와 삽입이 빈번한 경우 사용되기 좋은 List 컬렉션 

 

※ 끝에서 부터 추가/삭제 하는 경우는 ArrayList가 빠르며, 중간에 추가 또는 삭제하는 경우는 LinkedList 가 좋다.

 

• Set 인터페이스 (HashSet,TreeSet 클래스 들은 List를 상속받아 구현한 클래스)

  - 순서를 유지하지 않고 저장, 중복 저장 안 됨

  - 인덱스로 관리하지 않기 때문에 인덱스를 매개값으로 갖는 메소드가 없다.

  - 전체 객체를 대상으로 한번씩 반복해서 가져오는 반복자(Iterator)을 제공 

  - Set<G> = new [ HashSet | TreeSet]<G>();

    -1) HashSet

      -  객체들을 순서 없이 저장하고 동일한 객체는 중복 저장하지 않는다

  

• Map 인터페이스 (HashMap,HashTable,TreeMap,Properties 클래스 들은 List를 상속받아 구현한 클래스)

 - 키와 값의 쌍으로 저장 (key,value), 키는 중복 저장 안됨

 - 키가 중복저장 된다면 마지막에 설정된 key값으로 사용된것이 저장된다.

 - Map<K,V> map = new [ HashMap | HashTable | TreeMap | Properties ]<K,V>();

 - HashMap과 HashTable의 차이점은 HashTable은 동기화된 메소드로 구성 되어있다.

 

• 후입선출(LIFO : Last In First Out)

   - 나중에 들어온 객체가 처음으로 빠진다 (stack)

• 선입선출(FIFO : First In Fisrt Out) 

   - 처음에 들어온 객체가 처음으로 빠진다 (queue)

 

'JAVA' 카테고리의 다른 글

Optional 클래스  (0) 2021.07.14
일급 컬렉션 (First Class Collection)  (0) 2021.07.13
프로세스와 쓰레드  (0) 2021.07.09
상속  (0) 2021.07.07
equals()와 hashCode() 함수 차이  (0) 2021.07.03