리스트와 배열의 가장 큰 차이는 배열은 크기가 정해져있지만 리스트는 크기가 정해져있지않고 동적으로 변한다는 점이다.
1. 리스트
리스트는 자바의 컬렉션 프레임워크에 속하는 인터페이스로, 데이터의 순서를 유지하고 데이터의 크기를 동적으로 변경할수 있다.
리스트는 중간에 값을 추가하거나 제거하는것이 매우쉽다. 중간에 값이 추가되면 주솟값을 중간에 추가된 값의 주소로 참조가 변경되도록 하면된다.
연속적인 메모리공간에 할당되지않고, 각 요소가 자신의 "다음" 요소에 대한 참조만 갖고있기때문에 중간에 값을 추가하기가 쉽다.
리스트의 선언 및 초기화 :
List<Integer> myList = new ArrayList<>(); // 정수형 리스트 선언
myList.add(1); // 리스트에 1 추가
2. 배열
배열은 고정된 크기의 연속된 메모리 공간에 같은 타입의 데이터를 저장하는 자료구조이다.
배열은 중간에 값을 추가하거나 제거하는게 직접적으로는 불가능하다.
그런 작업을 하려면 리스트로 변환해서 삭제 후 다시 배열로 바꾸던지, 새로운 배열을 생성하고 원래 배열의 값을 복사하는 방법밖에없다.
배열의 선언 및 초기화 :
int[] myArray = new int[5]; // 정수형 배열 선언, 크기 5
myArray[0] = 1; // 인덱스 0에 1 삽입
3. 차이점
1) 크기
배열은 고정된 크기를 가지지만, 리스트는 가변적이다.
2) 유형
배열은 기본데이터타입과 객체를 모두 저장할수있지만, 리스트는 객체만 저장할수있다.
3) 성능
배열은 크기가 고정되어있기때문에 메모리사용이 더 효율적이다. 리스트는 동적으로 변하기때문에 효율성이 배열에 비해서 떨어질수있다.
4) 편의
리스트는 크기변경과 데이터삽입 삭제가 배열에비해서 사용이편리하다.
4. 예제
리스트 :
List<Integer> myList = new ArrayList<>();
myList.add(10);
myList.add(20);
myList.add(30);
for (int i = 0; i < myList.size(); i++) {
System.out.println(myList.get(i));
}
배열 :
int[] myArray = new int[3];
myArray[0] = 10;
myArray[1] = 20;
myArray[2] = 30;
for (int i = 0; i < myArray.length; i++) {
System.out.println(myArray[i]);
}
'Java > Java😊' 카테고리의 다른 글
[Java] 스택(Stack) 과 큐(Queue) 개념 + 자료구조 (0) | 2023.06.13 |
---|---|
[Java] call by value 는 있지만, call by reference 는 없다. (0) | 2023.06.07 |
[Java] 기본타입과 참조타입에 대한 이해 (데이터타입) (0) | 2023.05.23 |
[Java] TCP 통신에서 클라이언트의 국가를 확인하는 방법 (0) | 2023.05.10 |
[Java] enum 개념과 예시 (0) | 2023.05.10 |