자료(Data:값)을 메모리에서 구조적으로 처리하는 방법론으로 규모가 큰 데이터를 처리해야할 경우 자료구조가 필요함.
대표적 자료구조 : Tree구조(directory)
결국 정리정돈 진화의 산물 => 데이터의 자료구조.
data structure는 전공자들의 대학교 수업중 2,3학년이후에 배우는 고급과정이지만, 이런 대규모의 데이터를 다루어 본 적이 없어 공감이 안된다.
굳이 이걸 왜 써야하는가? 하는 의문이 이어짐. 상상력이 필요하다.
내가 만든 알고리즘으로 대규모의 데이터를 눈깜짝할 사이에 처리해서 많은 사람이 여유로운 저녁을 보내는 모습을...
자료구조란 대규모데이터를 보관, 검색, 삭제처리 할 때의 시간,공간적 효율성을 고려해 만든 알고리즘
‘자료구조와 알고리즘’ 논쟁을 보면 중요하지 않다는 측의 주장 중 가장 많은 논거가 “이미 대부분의 자료구조와 알고리즘은 라이브러리로 구현이 다 되어 있으니 잘 쓰기만 하면 된다.”라는 것이다.
하지만, 개인적으로 PS(Problem Solving) 트레이닝을 하면서 가장 많이 생각하는 것은 O(n)???시간 복잡도(Time Complexity)와 공간 복잡도(Space Complexity)???에 대한 것이다.
아무리 이미 주요 자료구조와 알고리즘이 라이브러리로 존재한다고 하더라도 내가 작성한 for문이 사용자의 HTTP 요청에 1시간만에 응답할 수 있다거나 1GB의데이터를 처리하는데 100GB의 메모리가 필요하다면, 우리는 그 솔루션을 사용할 수 없다.
컬렉션은 저장하는 크기의 제약이 없다. 자료를 구조적으로 처리하는 자료구조가 내장이 되어 제공이 됨
컬렉션은 두 부류로 나눠짐
상속에 대한 계층구조
Collection - Set - AbstractSet - HashSet
: 중복제거Collection - Set - AbstractSet - HashSet - LinkedHashSet
: 저장되는 순서유지Collection - Set - AbstractSet - TreeSet
: 자동 오름차순정렬됨Collection - List - AbstractList - ArrayList
: 배열처럼 사용(Thread Safe 기능없음)Collection - List - AbstractList - AbstractSequentialList - LinkedList
: (Thread Safe 기능없음)Collection - List - AbstractList - Vector
: 하위호환용 더이상 사용하지 말것.(Thread Safe 기능포함)Map - AbstractMap - HashMap
: (Thread Safe 기능없음)Map - HashTable
: 구버젼(Thread Safe 기능포함)