시니어 분들과 작업하다보니 하나하나
더 신경쓰게 되고
더 검색하게 되고
더 공부가 되네요.(but, 속도↓ 시간투자↑)
DB에서 데이터를 조회할 때, 동적으로 배열/리스트에 데이터를 받아야 할 때가 있습니다.
Java에서 사용할 수 있는 자료구조는 Array / List / ArrayList가 있습니다.
그러면 '언제 뭘 써야하고 이유는 무엇일까?'라는 생각이 들어 공부 겸 정리를 해보려고 합니다.
1. Array(배열)
장점
- index는 값에 대한 유일무이한 식별자 → 인덱스를 통한 검색이 용이함.
- 연속된 메모리의 공간으로 이루어져 있다. → 연속적이므로 메모리 관리가 효율적이다.
단점
- 정적이므로 배열의 크기를 컴파일 이전에 정해주어야 한다.
→ 컴파일 이후 배열의 크기를 변동 할 수 없다. 이로 인해 크기 조절이 제한되고 메모리 낭비가 발생할 수 있음.
2. List
장점
- 리스트는 배열이 가지고 있는 인덱스라는 장점을 버리고 대신 빈틈없는 데이터의 적재 라는 장점을 취함.
- 포인터를 통하여 다음 데이터의 위치를 가르켜고 있어 삽입 삭제의 용이. → 추가/삭제 성능 좋음.
- 비연속적 메모리 구조 → 불연속한 메모리에 데이터가 저장되어 메모리 관리가 유연함.
단점
- 검색 성능이 좋지 않다.
- 포인터를 통해 다음 데이터를 가르키므로 추가적인 메모리 공간 발생.
배열과 List에 대해 '간단히' 알아보았는데요,
메모리, 검색에 관해서는 상반되는 장단점을 가졌음을 알 수 있습니다.
정리하자면,
메모리 할당 | 데이터 조회 | 추가/삭제 | 조회 | |
Array(배열) | 정적 | 빠름. | 느림. | 빠름. |
List(리스트) | 동적 | 느림. | 빠름. | 느림. |
3. Java List Collection - ArrayList (feat.Java)
ArrayList는 Array(배열)와 List(리스트)의 장점을 합친 것입니다.
- 사용하기 편한 배열의 index 식별자 사용 가능.
- 리스트의 특성인 동적 할당 가능.
- 제네릭 사용이 가능하다.
개발을 하다보면 두 가지 특성을 사용해야할 경우가 생기는데
그럴 경우 매우 유용하게 사용할 수 있습니다:) (ex) List<DTO>...)
끝!!
'Java' 카테고리의 다른 글
[Java] Integer → int 캐스팅하기(Integer to int) (0) | 2023.01.11 |
---|---|
[Java] for문 vs 향상된(개선된) for문 (0) | 2022.12.30 |
현재 시간을 ms(millisecond) 변환해서 return받기 (0) | 2022.11.02 |
[IntelliJ] 인텔리제이 주석 안됨 현상 해결 방법!("/", "¿") (0) | 2022.09.13 |
[Java] StringUtils.hasText, isEmpty, isBlank 비교하기 (0) | 2022.08.05 |