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도 중복된 데이터를 저장할 수 없다. 

    다만, 입력된 순서대로 데이터를 관리한다. 





   

댓글

이 블로그의 인기 게시물

JAVA_Collection2