[배열 (Array)]
배열은 Java 의 기본 자료구조로, 크기가 고정된 순차적인 데이터 구조이다.
특징
- 고정크기 : 배열은 생성 시 크기를 지정하며, 크기를 동적으로 변경 할 수 없다.
- 동일한 타입: 배열은 한가지 데이터 타입만 저장할 수 있다.
- 빠른 접근 속도 : 인덱스를 사용하여 요소에 빠르게 접근할 수 있다.
- 저수준: 배열은 java의 가장 기본적인 데이터 구조로 추가적인 기능이 없다.
장점
- 메모리 사용이 효율적이며 ,요소에 대한 접근이 빠르다
- 다차원 배열을 사용 할 수 있다.
단점
- 크기가 고정되어 있어 데이터가 동적으로 변하는 경우 사용이 어렵다
- 요소의 추가/삭제가 어렵고 비효율적이다.
배열의 선언
// 방법1
int[] numbers = new int[] {10, 20, 30}; //개수 생략해야 함
// 방법2
int[] numbers = {10, 20, 30}; // new int[] 생략 가능
// 방법3
int[] numbers = new int[3] // 이 후 값을 넣어준다. 넣어주지 않으면 기본값유지
numbers[0] = 10;
[리스트(List)]
리스트는 Java의 컬렉션 프레임워크에서 제공하는 인터페이스로, 데이터를 동적으로 관리할 수 있는 자료구조이다. ArrayList, LinkedList 등의 구현체가 있다.
특징
- 동적 크기 : 데이터의 삽입과 삭제에 따라 크기가 자동으로 조정된다.
- 유연성 : 기본형 데이터도 Wrapper Class를 통해 저장할 수 있다.
- 다양한 구현체 : ArrayList, LinkedList, Vector 등 여러 구현체가 있어 용도에 맞게 사용 할 수 있다.
- 메서드 제공: 데이터를 추가, 삭제, 정렬 등 다양한 작업을 쉽게 처리 할 수 있는 메서드가 제공 된다.
장점
- 크기가 자동으로 조정되어 동적인 데이터 처리에 적합하다
- 여러 구현체를 선택 할 수 있어 상황에 다라 유리한 성능을 얻을 수 있다.
단점
- 배열에 비해 메모리 사용이 비효율적일 수 있다.
- 배열에 비해 속도가 느릴 수 있다.
리스트 선언
List<String> arrayList = new ArrayList<>(); // ArrayList 선언
List<String> linkedList = new LinkedList<>(); // LinkedList 선언
List<String> vector = new Vector<>(); // Vector 선언
List<String> stack = new Stack<>(); // Stack 선언 (Vector의 하위 클래스)
배열과 리스트의 차이
특징 | 배열(Array) | 리스트(List) |
크기 | 고정 (생성 시 지정, 변경 불가) | 동적 (데이터 삽입/ 삭제에 따라 조정 가능) |
데이터 타입 | 동일한 타입만 저장 가능 | List<Object> 로 여러 타입 저장 가능 |
메서드 지원 여부 | 기본 제공 메서드 없음 | 다양한 메서드 제공 (추가, 삭제, 탐색 등) |
성능 | 메모리 효율적, 접근 속도 빠름 | 메모리 사용 증가, 접근 속도는 구현체에 따라 다름 |
구현체 | Java 기본 자료구조 | ArrayList, LinkedList 등 다양함 |
사용 목적 | 고정 크기의 데이터 처리 | 크기 변경이 자주 필요한 경우 |
'JAVA' 카테고리의 다른 글
바로빌을 이용한 계좌확인 API 연동 구현 - 카드사용내역 API (2) | 2024.12.18 |
---|---|
BufferedReader 와 BufferedWriter (0) | 2024.11.23 |
Java int배열의 오름차순과 내림차순 (0) | 2024.11.21 |
Java int 와 Integer 의 차이 (0) | 2024.11.20 |
Java 문자열 뒤집기 - reverse() (0) | 2024.11.19 |