티스토리 뷰

Java

[Java] - 배열(Array)과 리스트(List) 에 대하여

영지는 달리는중 2020. 9. 3. 12:09

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
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함