자료구조(Array, list, stack, queue)

넙데데맨·2022년 3월 8일
0
post-custom-banner

선형 자료구조

자료를 구성하는 원소들을 순차적으로 나열시킨 형태

배열(Array)

같은 타입의 변수들로 이루어진 집합

인덱스 : 배열에서 위치를 가리키는 숫자
요소(Element) : 배열에 저장된 각각의 값
논리적 순서와 물리적 순서가 일치한다.

ArrayList

  • 데이터 순서 있음
  • LinkedList보다 검색이 빠르고 데이터 추가 삭제가 느리다.(검색에 유리)
    중간 인덱스에 값을 추가하거나 삭제 시 해당 인덱스 뒤에 존재하는 값들은 한칸씩 밀리고 당겨짐
ArrayList list = new ArrayList();
ArrayList list = new ArrayList(5); // 최소 5개 추가 시 5개씩 증가
ArrayList list = new ArrayList(5,2); //  최소 5개 추가 시 2개씩 증가함
list.add(object val); // 마지막 위치에 val 추가
list.add(int index, object val) // 해당 인덱스에 value 추기되며 해당 인덱스에 원래 값이 존재했다면 전체적으로 뒤로 밀림
list.remove(int index); // 해당 인덱스에 해당하는 데이터 제거
list.clear(); // 모든 데이터 제거
list.get(int index) // 해당 인덱스에 있는 데이터 가져옴
list.set(int index, Object value) // 해당 인덱스 데이터 value로 변경
list.indexOf(object value);// 해당값의 인덱스 조회 없을 시 -1 반환

linkedList

  • 데이터 추가가 빠름(이전 노드와 다음 노드 참조하는 상태만 변경하면 됨)
  • 메모리에 있는 데이터의 물리적 배치를 사용하지 않음
  • 요소들은 노드라는 단위에 것에 저장되어 다음 노드 연결 주소가 노드에 포함 되어있음
  • 모든 노드가 연결될 때까지 반복
  • 순차적으로 추가 시 linkedList는 head부터 시작해 가야해 arrayList보다 오래 걸릴 수 있지만 중간 부분을 추가 삭제할 경우 처리속도가 훨씬 빠르다
  • 해당 요소를 찾을 때도 마찬가지 head부터 시작해 찾아야하기 때문에 arrayList보다 오래걸림

Stack

Last In First Out
1. 탑처럼 쌓아 나중에 쌓은 것이 먼저 나옴
2. 한번에 하나의 데이터만 처리가능
3. 동적 메모리

Stack<Integer> stack = new Stack<>(); // 
stack.push(1); // 1 추가
stack.pop(); // 가장 마지막 원소의 값 삭제 및 출력
stack.peek(); // 가장 마지막 원소 출력
stack.clear(); // 스택 초기화
stack.size(); // 스택 크기 출력
stack.empty(); // stack이 비어 있으면 true
stack.contains(n); // stack에 n 있으면 true

Queue

  1. First In First Out
  2. 동적 메모리
  3. 가장 먼저 입력된 요소 처리
Queue<Integer> queue = new LinkedList<>();
queue.offer(1) // boolean 리턴
queue.add(2) // 예외 발생
queue.poll() // 값 리턴 비어있으면 null
queue.remove() // 예외 발생 
queue.clear() // queue 초기화
profile
차근차근
post-custom-banner

0개의 댓글