티스토리 뷰
Array(배열)
- 여러 데이터를 하나의 이름으로 그룹핑해서 관리하기 위한 자료구조
배열의 특징
- 크기가 정해져 있다 / 기능이 없다
- 인덱스를 가지고 엘리먼트의 인덱스는 변경되지 않는다
- 인덱스를 이용한 빠른 조회가 가능하다
- 데이터에 대한 인덱스 값이 고정적이다 (삭제된 엘리먼트의 공간은 그대로 남아있게된다)
배열의 단점
- 길이를 바꿀 수 없다 / 초기 선언할 때 꼭 길이를 설정하여야 함
- 배열에서 엘리먼트를 삭제하면 공간이 그대로 남아 메모리가 낭비된다
- 기능이 없다 / 추가,삭제,변경 등은 개발자가 직접 구현해야 함
사용예시
//배열의 정의
int []numbers = new int[5]
//배열의 값 저장
numbers[0]=10;
numbers[1]=23;
//배열의 길이 확인
System.out.println("numbers length",numbers.length) // 5
List(리스트)
- 배열이 가지고 있는 인덱스라는 장점을 버리고 대신 빈틈없는 데이터의 적재라는 장점을 취한 데이터 자료구조
- 리스트에서의 인덱스는 유일무이한 데이터의 식별자가 아닌 몇번째 데이터인가 정도를 의미 (데이터의 삭제 추가에 따라 인덱스는 바뀔 수 있다)
list 자료구조의 기능
- 처음, 끝 , 중간에 엘리먼트를 추가/삭제하는 기능 (.remove, .add)
- 리스트에 데이터가 있는지 체크기능(.isEmpty)
- 리스트의 모든 데이터에 접근 할 수 있는 기능(.get)
LinkedList 와 ArrayList
ArrayList는 내부적으로 데이터를 배열에서 관리하므로 데이터에 인덱스가 존재하여 검색에 유리
LinkedList는 인덱스가 없어 검색 성능이 떨어지지만 데이터의 추가와 삭제에 유리
결론
검색에 대해서는 인덱스를 가지고있는 ArrayList 가 인덱스가 없는 LinkedList 보다 빠르고 성능이 좋다
삽입,삭제에 대해서는 이전 노드와 다음 노드를 참조하는 상태만 변경하면 되는 LinkedLikst가 삽입, 삭제 후 다른 데이터를 옮기고 복사해야하는 ArrayList보다 빠르고 성능이 좋다
'Java' 카테고리의 다른 글
[Java 8] - 함수형 인터페이스와 메소드 참조 (0) | 2020.11.14 |
---|---|
[Java] - super(), this() (0) | 2020.10.10 |
[Java] - War, Jar의 차이 (0) | 2020.08.23 |
[Java 8] - Stream Api (0) | 2020.08.08 |
[Java 8] - 람다식(Rambda)의 개념과 예제 (0) | 2020.08.06 |