Rootable의 개발일기
배열과 리스트 본문
📌 배열
크기를 지정하고 해당 크기만큼의 연속된 메모리 공간을 할당받는 작업을 수행하는 자료형
🔎 장/단점
✔ 장점
- 메모리에 연속적으로 할당되어 있어 어느 위치에서나 O(1)에 조회가 가능(검색 성능 우수)
- 인덱스를 이용하여 무작위 접근 가능(순차 접근을 하지 않아도 됨)
- 순차 접근을 하더라도 연결 리스트보다 빠름
✔ 단점
- 자료의 삽입이나 삭제 작업에서 데이터 이동이 많아 비효율적임
- 크기가 고정되어 있어 메모리 낭비나 부족 현상이 발생할 가능성이 높음
Reference:
[자료구조] 배열 (array)
자료구조는 크게 메모리 공간 기반의 연속 방식 포인터 기반의 연결 방식 으로 나뉜다. 오늘 다루는 배열은 "메모리 공간 기반의 연속 방식"에 속하는 자료구조이다. 다음 시간에 다루는 연결리
hyoeun-log.tistory.com
📌 동적 배열
동적 배열은 크기가 고정된 배열에서 예상보다 많은 자료가 들어올 경우, 동적으로 크기를 조정할 수 있는 배열의 단점을 보완한 자료형
🔎 동적 배열 자료형
자바의 ArrayList는 동적 배열 자료형이다. 배열 크기를 임의로 변화시킬 수 있고, 타입을 직접 설정할 수 있다. 하지만 배열 크기가 정해진 용량을 다 채우면,
더블링이 발생하여 현재의 2배 크기로 늘리는데 기존 데이터를 모두 복사하여 옮기기 때문에 O(n)의 비용이 발생한다. 입력 시간이나 검색 시간은 O(1)으로 동일하다.
Reference:
https://class-programming.tistory.com/56
자바 컬렉션 (Java Collection) 정리
Collection 이란 ? - 여러 원소들을 담을 수 있는 자료구조를 뜻함 ※ 자료구조? 자료를 효율적으로 이용할 수 있도록 컴퓨터에 저장하는 방법 핵심 인터페이스 1. List - 특징 : 순서가 있는 데이터의
class-programming.tistory.com
📌 연결 리스트
데이터의 순서가 메모리에 물리적인 순서로 저장되지 않는 자료구조
모든 노드는 연결 구조이며, 데이터와 다음 노드의 주소로 구성되어 있다.
🔎 장/단점
✔ 장점
- 포인터 작업만 하면 되므로, 새로운 노드를 삽입하거나 삭제하기가 간편
- 빈 공간을 허용하지 않기 때문에 데이터 관리에 편리 (자동 정렬)
- 데이터 개수만큼 메모리를 할당하므로, 메모리 관리가 편리
- 시작 또는 마지막 노드의 삽입/삭제/추출은 O(1)에 가능
✔ 단점
- 특정 인덱스를 찾기 위해서는 전체 데이터를 순서대로 읽어야 하므로, O(n)의 시간이 소요됨(검색 능력 떨어짐)
- 객체로 데이터를 다루기 때문에 적은 양의 데이터만 쓸 경우 배열에 비해 차지하는 메모리가 큼
- Wrapper class는 기본 자료형의 객체 자료형을 말한다.
- int의 경우, Integer라는 wrapper class가 있는데, 플래그, 포인터, 락, 값 등을 저장하기 때문에 16byte가 할당된다.
🔎 구현
Reference:
https://freestrokes.tistory.com/84
Java로 연결 리스트(Linked List) 구현하기
Java로 연결 리스트(Linked List) 구현하기 Java로 연결 리스트(Linked List)를 구현하는 방법에 대해 알아보겠습니다. 1. 연결 리스트(Linked List) 연결리스트는 각 노드가 데이터와 포인터를 가지고 한 줄
freestrokes.tistory.com
'Java' 카테고리의 다른 글
try-with-resources (0) | 2023.09.13 |
---|---|
자바 리플렉션 API (0) | 2023.09.12 |
자바언어의 특징 (0) | 2023.09.09 |
Java 컴파일 과정과 JVM (0) | 2023.09.09 |
객체 지향 프로그래밍(Object Oriented Programming) (0) | 2023.05.01 |