JAVA_Collection
Collection (인터페이스)
1. List(인페이스)
1) ArrayList (클래스)
: 배열구조 -> 인덱스 사용 가능 -> 순서대로 저장
-> 저장하고 저장된 정보를 빼올 때 속도 빠름
-> 데이터를 가져올 때 대부분의 경우 ArrayList 사용됨
-> 가장 많이 사용
단, 추가적으로 정보를 삽입하고 삭제할 때는 속도가 느리다.
2) LinkedList (클래스)
: ArrayList의 단점을 보완해서 만든 것
-> ArrayList처럼 순서대로 저장되는 것이 아니라 각 공간이 있고 메모리 주소로 연결시킨 것
-> 추가적인 정보를 삽입, 삭제할 때도 연결만 새로하면 되니까 속도가 빨라짐
-> 두번째로 많이 사용
3) vector
: ArrayList와 동일한 구조.
배열의 크기가 늘어나고, 줄어듬에 따라서 자동으로 크기가 조절됨
4) stack (= 계산기구조)
: 정보가 stack(쌓인다)고 생각하면 됨
정보가 쌓였으니까 가장 먼저 받은 정보가 가장 아래에 쌓이는 것
* stack 구조
- FILO : First In Last Out
- LIFO : Last In First Out
5) queue
: 그냥 들어온 순서대로 순차적으로 내보내는 방식
ex) 컴퓨터의 명령 처리 방식, 프린터의 처리방식 등
* 우선순위 queue
: 우선순위를 설정하면 먼저 동작한다.
ex) 백신 프로그램 - 다른 프로그램보다 우선적으로 동작
* queue 구조
- FIFO : First In First Out
- LILO : Last In Last Out
2. Set (인터페이스)
: 집합구조
- 배열과 달리 집합의 값들은 순서가 존재하지 않고 중복도 없다.
- 집합은 대상 원소가 집합에 소속되었는지 여부를 검사한다.
- 주데이터는 list구조로 들여오고 set구조는 일부데이터를 사용할 때만 사용
(set구조로 전체 주데이터 가져올 때 메모리 문제 발생할 수 있기 때문)
1) HashSet
: HashSet은 가장 대표적인 set
내가 입력한 값과 Hash 함수를 통해 얻은 값은 1:1로 저장된다.
-> 데이터를 중복 저장할 수 없고 순서대로 입력되지 않는다.
* HashSet은 null요소도 허용한다.
2) TreeSet
: TreeSet도 중복된 데이터를 저장할 수 없고 입력한 순서대로 값을 저장하지 않는다.
다만 TreeSet은 기본적으로 오름차순으로 데이터를 정렬.
데이터 보다 작으면 왼쪽, 크면 오른쪽에 정렬
* 이진트리
: 각각의 노드가 최대 두 개의 자식 노드를 가지는 트리 자료 구조
- node : 데이터가 들어가는 공간
- root : 최상위 node
* 이진트리 출력 순서
- 전위 : 가운데 -> 왼쪽 -> 오른쪽 순서로 출력
- 중위 : 왼쪽 -> 가운데 -> 오른쪽 순서로 출력
- 후위 : 왼쪽 -> 오른쪽 -> 가운데 순서로 출력
3) LinkedHashSet
: LinkedHashSet도 중복된 데이터를 저장할 수 없다.
다만, 입력된 순서대로 데이터를 관리한다.
댓글
댓글 쓰기