안녕하세요! 오늘은 Java에서의 배열(Array)과 리스트(List)에 대해 알아보겠습니다.
파이썬에서는 리스트 하나로 대부분의 데이터 관리가 가능하지만, 자바에서는 두 가지를 구분하여 제공하는데요! 이 글에서는 두 자료구조의 특징과 실제 코드를 통해 어떤 상황에서 어떤 자료구조를 사용하는 것이 좋을지 살펴보겠습니다🤓
특징
- 고정된 크기
- 연속된 메모리 공간 사용
- 인덱스를 통한 빠른 접근 가능
- 기본형과 참조형 모두 저장 가능
사용 예시
// 배열 선언과 초기화 int[] scores = new int[5]; // 크기 5로 고정 int[] nums = {1, 2, 3}; // 초기값으로 생성 String[] fruits = new String[3]; // 참조형도 가능 // 값 접근과 변경 scores[0] = 100; // 인덱스로 접근 System.out.println(scores.length); // 길이는 .length
특징
- 동적으로 크기가 변함
- 다양한 메소드 제공
- 참조형만 저장 가능
2-1. ArrayList
// 선언과 초기화 List<Integer> numbers = new ArrayList<>(); // 인터페이스 사용 ArrayList<String> names = new ArrayList<>(); // 구현체 직접 사용 // 데이터 조작 numbers.add(10); // 추가 numbers.remove(0); // 삭제 numbers.get(0); // 접근 System.out.println(numbers.size()); // 크기는 .size()
2-2. LinkedList
LinkedList<String> playlist = new LinkedList<>(); playlist.addFirst("노래1"); // 맨 앞 추가 playlist.addLast("노래2"); // 맨 뒤 추가 playlist.add(1, "노래3"); // 중간 삽입
배열 활용
- 크기가 고정된 경우
- 학생 성적 처리 (과목 수가 정해진 경우)
- 요일별 데이터 저장 (7일로 고정)
- 빠른 조회가 필요한 경우
- 인덱스로 직접 접근하는 경우가 많을 때
- 순차적인 데이터 처리가 필요할 때
리스트 활용
- ArrayList
- 데이터의 크기가 가변적인 경우
- 주로 맨 끝에 추가/삭제하는 경우
- 조회가 많은 경우
- LinkedList
- 중간에 삽입/삭제가 빈번한 경우
- 메모리를 효율적으로 사용해야 할 때
- 데이터의 순서가 자주 바뀌는 경우
배열과 리스트는 각각의 장단점이 있으므로, 여러 문제를 풀어보며 각각의 상황에 맞는 자료구조를 선택해야겠어요💡