Java Array,List,ArrayList

개미는뚠뚠·2023년 4월 1일
0

java

목록 보기
4/11
post-thumbnail

오늘은 자바의 자료형 중 array, List 마지막으로 arrayLIst에 대해서 확실하게 구분하기 위해 정리를 진행한다.

Array, LIst

1. array와 List?

일반적으로 둘의 공통점은 데이터를 그룹핑해서 관리하기 위함이다. 그렇다면 둘의 차이점은 뭘까?

일단 둘의 큰 차이점으로는 저장 방식, 크기 할당, 속도 가 있다.

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()

2. arrayList?

그렇다면 arrayList란 무엇인가?
array 는 식별자를 갖는 대신 저장공간이 제한적이다. 그러나 arrayListList처럼 데이터가 크기가 증가할 시 저장공간이 가변적으로 증가하는 장점이 있다. 결론적으로 가장 큰 특징은 데이터 크기가 증가해도 저장공간이 가변적으로 변화하며, 해당 데이터들은 각각의 식별자를 가진다는 것이다.

그럼 무조건 arrayList가 좋은 거 아니야?! 라고 생각할 수 있겠지만, 꼭 그렇지만도 않다.

  1. 기본적으로 선언해주지 않은 데이터가 들어올 시 일반적인 메모리의 1.5배 정도를 사용한다.
  2. 비순차적인 데이터의 추가,삭제가 느리다

라는 단점이 존재하며, array와 List를 사용해도 되는 상황에 굳이 arrayList로 코드를 짠다면 불필요한 메모리 누수가 발생할거라 생각한다.

좀 막연하게 글을 정리한 거 같지만,,,실무에서 나름 열심히 고민하면서 코드를 짜고 있다. 다음에는 해당 자료형들에 대한 클래스를 정리하도록 하겠다.

0개의 댓글