오늘은 자바의 자료형 중 array, List 마지막으로 arrayLIst에 대해서 확실하게 구분하기 위해 정리를 진행한다.
일반적으로 둘의 공통점은 데이터를 그룹핑해서 관리하기 위함이다. 그렇다면 둘의 차이점은 뭘까?
일단 둘의 큰 차이점으로는 저장 방식, 크기 할당, 속도 가 있다.
Array
1. 저장방식 : 자료가 저장될 공간이 정해져있고, 식별자(인덱스)가 존재한다. ex) str[i] 2. 객체 생성 시 크기 할당 필수적이다. ex) char[] c = new char[3] 3. 데이터 삽입/삭제가 느리고, 데이터 조회 속도가 빠르다.
List
1. 저장방식 : 식별자(인덱스)가 없으며, 앞의 요소가 삭제되면 새로 추가되는 요소가 그 공간을 차지한다. 2. 객체 생성 시 크기 할당 필요X 3. 삽입/삭제: 빠르고, 데이터 조회 속도가 느리다.
위에 내용을 간단히 정리하면 다음과 같다.
1. Array는 데이터가 저장된 공간마다 각각의 식벽자(index)가 존재하나, List는 별개의 식별자가 없다.
2. Array는 객체 생성 시 크기 할당이 필수적이고, List는 필요하지 않다.
3. Array는 삽입 삭제 가 느리고, 데이터 조회 속도가 빠르다. List는 이 반대로 생각하면 편할 거 같다.
만약 그룹핑할 데이터의 크기가 정해져있다면 Array를, 그렇지 않다면 List를 쓰는게 맞다는 개인적인 결론을 내린다...
그리고 저장된 Array와 List의 크기를 비교하는 메서드 또한 다른데 그 내용은 아래와 같다.
- array 의 크기를 확인할 때는 .length() - List 의 크기를 확인할 때는 size()
그렇다면 arrayList란 무엇인가?
array 는 식별자를 갖는 대신 저장공간이 제한적이다. 그러나 arrayList는 List처럼 데이터가 크기가 증가할 시 저장공간이 가변적으로 증가하는 장점이 있다. 결론적으로 가장 큰 특징은 데이터 크기가 증가해도 저장공간이 가변적으로 변화하며, 해당 데이터들은 각각의 식별자를 가진다는 것이다.
그럼 무조건 arrayList가 좋은 거 아니야?! 라고 생각할 수 있겠지만, 꼭 그렇지만도 않다.
라는 단점이 존재하며, array와 List를 사용해도 되는 상황에 굳이 arrayList로 코드를 짠다면 불필요한 메모리 누수가 발생할거라 생각한다.
좀 막연하게 글을 정리한 거 같지만,,,실무에서 나름 열심히 고민하면서 코드를 짜고 있다. 다음에는 해당 자료형들에 대한 클래스를 정리하도록 하겠다.