본문 바로가기
Back/Java

[Java / Collection] 컬렉션 개념 이해 및 정리(*)

by SIXXXX_ 2022. 2. 17.
728x90

Collection

  • 객체의 모음, 그룹으로 표현
  • 다수의 데이터를 저장할 수 잇는 클래스
  • Collection Framework는 JDK1.2부터 지원한다고 한다.
  • 또한 람다표현식을 지원한다.

 

 

Collection 종류

  • List
  • Set
  • Map

이렇게 3가지가 있는데 

각각을 알아보기 전에 주요 특징을 알아보자

 

 

Collection 특징

  1. 일관된 API : API 사용으로 Collection에서 상속받아 통일된 메서드를 사용할 수 있다는 점이 장점이라고 한다.
  2. 추상화 : 객체 지향 프로그래밍의 추상화의 기본 개념이 성공적으로 구현되어 있다.
  3. 빠르고 좋은 품질의 프로그램 구현 가능 : 유용한 데이터 구조 및 알고리즘이 성능을 향상시키는데 Colleciton을 사용해 구현한다.

 

 

Collection 종류와 구현 Class

 

1. List<E> 

  • 순서가 있는 데이터의 집합 : 고유한 index를 갖는다
  • 중복을 허용한다
  • add하면 데이터가 순차적으로 들어간다

 

ArrayList

  • 동적배열 제공
  • 컬렉션에 개체를 추가, 삭제하면 크기가 자동으로 조정된다.
  • String[ ] 과 비교, 배열의 크기를 지정하기 어렵다면 String [ ] 보단 ArrayList를 사용하여 크기를 자동조절하도록 한다

 

 

Linked List 

  • 요소(노드)가 연속된 위치에 저장되지 않고 모든 요소가 데이터 부분과 주소 부분이 있는 별도의 객체에 저장된다.

 

 

Vector

  • 동적배열 제공
  • 표준 배열보단 느리지만 많은 움직임이 필요한 프로그램에서 유용하게 쓰이고
  • ArrayList와 유사하다.
  • 차이점은 Vector는 동기화가 되고 ArrayList는 동기화가 되지 않는다

*동기화(Synchronization) : 멀티스레드(Multi-thread)프로그래밍에서는 하나의 객체를 여러 스레드가 접근할 수 있기 때문에 데이터의 일관성을 유지하기 위해 동기화가 필요하다

 

 

Stack

  • 후입선출을 기본 원칙으로 한다.

 

 

 

2. Set <E>

  • 중복 값을 저장할 수 없는 정렬되지 않은 데이터의 모음
  • 중복값을 방지하고 고유한 데이터만 저장해야 되는 경우에 사용된다.

 

 

HashSet 

  • 동일한 순서로 삽입되는 것을 보장하지 않는다. NULL 요소 삽입을 허용한다.

 

 

LinkedHashSet

  • HashSet과 유사하지만 차이점은 데이터를 저장하는 순서를 유지한다.

 

 

SortedSet

  • 순서를 정렬하는 메서드 제공

 - TreeSet

  • Tree를 사용하여 저장, 데이터의 순서는 자연적인 순서(오름차순)대로 유지된다.

 

 

 

 

3. Map<K,V>

  • 키-값으로 매핑하는 데이터 구조로 키는 중복허용이 안되지만 값은 중복 허용이 된다.
  • 키를 기반으로 프로그래밍하는 경우에 유용하다고 한다. 중복키는 지원이 되지 않음에 주의
  • iterator 기능이 없기 때문에 Map의 데이터를 가지고 있는 Set을 만들고 Set에 들어가 있는 데이터 타입은 Map.Entry
  • 값을 알아낼때 getKey(), getValue()로 알아낸다.

 

HashTable

  • 동기화를 보장하는 Map계열 클래스

 

HashMap

  • Hashing기술을 이용한다.

*Hashing : 인덱싱 및 검색작업이 빨라지도록 키에 산술적인 연산을 적응하여 항목이 저장되어 있는 테이블의 주소를 계산하여 항목에 접근하는 방식

 

 

SortedMap

-TreeMap

  • 이진트리 기반 Map
  • 키와 값이 저장된 Map, Entry를 저장

 

 

Collection의 메서드

  • Collections.copy(list, list) : 복사본 만들기
  • Collections.reverse(list) : 역순으로 정렬하기
  • Collections.shuffle(list) : 무작위로 섞기
  • Collections.sort(list) : 정렬하기
  • 동기화 메서드

- static Collection SynchronizedCollection (Collection c)
- static List synchronizedList (List list)
- static Map synchronizedMap (Map m)
- static Set synchronizedSet (Set s)
- static SortedMap synchronizedSortedMap (SortedMap m)
- static SortedSet synchronizedSortedSet (SortedSet s)

 

 

REFERENCE(*)

 

 

 

 

더보기

자료구조 처음에 스터디하면서 그냥 종류랑 뭔말인지 모르고 '그냥 그렇구나~'이런 느낌으로 가져갔고 뭘 공부해야 될지 감이 안잡혔는데 확실히 예시 드는 것들 찾으면 왜 필요한지 알게되니까 더 열심히 공부하게 되고 찾아보고 더 좋은 방법과 어떻게 써야 괜찮은지 공부해보려는 자극이 생긴다.

아직 다 이해가는건 아니고 +알고리즘 문제 풀어보면서 하나씩 깨보자!

 

 

+ TreeMap 궁금해서 검색하다가 데이터 관련해서 R에서 TreeMap을 써보는걸 발견했는데(아마 다른 내용일 듯) 뭔가 미국주식차트같다 ㅎ

https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=jnlovejy&logNo=221733378803

 

#빅데이터전문가 #R프로그래밍 Treemap 함수 / bubble chart

treemap() 함수 패키지 인스톨 후 함수 대입 네모박스로 시각화해서 원하는 수치가 크면 - 박스크기 또는 ...

blog.naver.com

 

+ㅇㅣ건 자바스크립트에서 쓰는 UI 컨트롤(?)인가본데 구글링하니까 앞에 나와서 들어가봤는데 뭔가 시각화되어있으면 관심이 가긴 하네ㅎ

https://demo.grapecity.co.kr/wijmo/docs/Topics/Chart/Advanced/SpecialCharts/TreeMap