Collection
- 객체의 모음, 그룹으로 표현
- 다수의 데이터를 저장할 수 잇는 클래스
- Collection Framework는 JDK1.2부터 지원한다고 한다.
- 또한 람다표현식을 지원한다.
Collection 종류
- List
- Set
- Map
이렇게 3가지가 있는데
각각을 알아보기 전에 주요 특징을 알아보자
Collection 특징
- 일관된 API : API 사용으로 Collection에서 상속받아 통일된 메서드를 사용할 수 있다는 점이 장점이라고 한다.
- 추상화 : 객체 지향 프로그래밍의 추상화의 기본 개념이 성공적으로 구현되어 있다.
- 빠르고 좋은 품질의 프로그램 구현 가능 : 유용한 데이터 구조 및 알고리즘이 성능을 향상시키는데 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(*)
- https://seeminglyjs.tistory.com/227
- https://coding-factory.tistory.com/557
- https://walbatrossw.github.io/java/2018/02/16/java-basic-22-treemap.html
- https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=blaxh1101&logNo=221565600821
- https://lalwr.blogspot.com/2016/02/collection-framework.html
- https://blog.naver.com/blaxh1101/221563857171
자료구조 처음에 스터디하면서 그냥 종류랑 뭔말인지 모르고 '그냥 그렇구나~'이런 느낌으로 가져갔고 뭘 공부해야 될지 감이 안잡혔는데 확실히 예시 드는 것들 찾으면 왜 필요한지 알게되니까 더 열심히 공부하게 되고 찾아보고 더 좋은 방법과 어떻게 써야 괜찮은지 공부해보려는 자극이 생긴다.
아직 다 이해가는건 아니고 +알고리즘 문제 풀어보면서 하나씩 깨보자!
+ 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
'Back > Java' 카테고리의 다른 글
[열혈 java 프로그래밍, 윤성우] 자바 강의 1~2강 정리 (0) | 2022.02.25 |
---|---|
[ 자바 웹 프로그래밍 Next Step] Day.01 테스트와 리팩토링의 중요성 (0) | 2022.02.23 |
[Java / 개념이해 ] 자바의 정석 : 자바 언어 특징, JVM, 자바개발환경구축 (0) | 2022.02.15 |
[programming basic] 메소드와 클래스, 객체, 추상화, 필드 (+캡슐화) (0) | 2021.07.11 |
[programming basic] java의 특징, 메모리, 연산자 정리 (0) | 2021.07.11 |