관리 메뉴

JeongseokDEV-SimpleU

[자바] 배열과 리스트 본문

자바

[자바] 배열과 리스트

SimpleU 2020. 2. 13. 17:42

배열과 리스트 비교

배열 - 데이터가 많아지면 관리의 필요성이 느껴짐 , score1, score2 .. 계속 변수 생성 할 수 없기에
         생겨난 데이터를 하나로 묶을 수 있는 것 

       - 배열을 이용하면 하나의 변수에 여러 데이터를 담을수있고, 반복문과 결합 하면 많은정보도 효율적으로 처리가능
       - 배열 인덱스는값에 대한 유일무이한 식별자.  

자바의 배열은 기능적으로 한계가 많음 //
1. 배열의 크기를 배열을 생성할 떄 지정하는 것
2. 배열의 크기를 변경할 수 없는 것
3. 배열에서 설정된 엘리먼트의 개수를 알아낼 수 없는 것

그러나 데이터의 크기가 확정적일 때 배열을 사용하는 것이 메모리나 처리속도 면에서 좋음.

배열의 특징 
1. 크기가 정해져 있고, 기능이 없음 ( 배열의 장점이자 단점 )
2. 인덱스를 가지며, 인덱스는 변경되지 않음. ( 데이터베이스의 기본키 개념 )
3. 데이터를 메모리에 순차적으로 나열 가능
4. 인덱스를 이용하여 빠르게 조회 가능
5. 인덱스를 이용하여 데이터를 가져오려면 데이터에 대한 인덱스 값이 고정 되어야 함
    - 삭제된 엘리먼트의 공간이 그대로 남아서 데이터의 낭비가 심함

배열의 한계 
1. 배열의 길이를 바꿀 수 없음

//// 인덱스가 중요한 경우는 배열을 사용, 인덱스가 중요하지 않는 경우에는 리스트를 사용 ////

리스트
- 리스트는 배열의 인덱스라는 장점을 버리고 빈틈없는 데이터의 적재라는 장점을 취한 데이터 스트럭쳐
- 리스트의 핵심은 엘리먼트들간의 순서, 따라서 리스트를 다른 말로는 시퀀스라고 부름
- 순서가 있는 데이터의 모임
- 리스트에서 인덱스는 몇 번째 데이터인가 정도의 의미를 가짐

  ( 배열-array에서의 인덱스의 값에 대한 유일무이한 식별자 )
- 빈 엘리먼트는 허용하지 않음
- 순차성을 보장하지 못함 그래서 special locality 보장이 되지 않아서 cache hit이 어려움
   cache hit - cpu가 참조하고자 하는 메모리가 캐시에 존재하고 있을 경우

리스트 특징
- 처음, 끝, 중간에 엘리먼트를 추가/삭제 하는 기능
- 리스트에 데이터가 있는지를 체크하는 기능
- 리스트의 모든 데이터에 접근할 수 있는 기능

// 자바는 배열과 리스트를 모두 지원하고 두가지가 완벽히 분리되어 있음 // 

자바에서는 배열 이외에 ArrayList와 LinkedList 
인덱스를 이용해서 데이터를 가져오는 것이 빈번하다면 내부적으로 배열을 이용하는 ArrayList가 훨씬 빠름
하지만 데이터의 추가/삭제가 빈번하다면 LinkedList가 훨씬 효과적

ArrayList는 배열을 이용해서 리스트를 구현한 것을 의미
장점 : 내부적으로 배열을 사용하기 때문에 인덱스를 이용해서 접근하는 것이 빠름 
단점 : 데이터의 추가와 삭제가 느림

데이터의 추가
ArrayList는 내부적으로 데이터를 배열에 저장 /
배열의 특성상 데이터를 리스트의 처음이나 중간에 저장하면, 이후의 데이터들이 한칸씩 뒤로 물러나야함

삭제 
삭제도 추가와 유사하게 빈자리가 생기면 빈자리를 채우기 위해서 순차적으로 한칸씩 땡겨야 함

조회
인덱스를 이용하여 데이터를 가져오고 싶을 때 Array로 구현한 리스트는 속도가 매우 빠름 ....

'자바' 카테고리의 다른 글

[자바]  (0) 2020.02.11
[자바]BubbleSort, SelectionSort, InsertionSort  (0) 2020.02.07
[자바]관리 프로그램 기초( 도서 )  (0) 2020.02.07
[자바]채팅 프로그램(2)  (0) 2020.02.02
[자바]채팅프로그램(1)  (0) 2020.01.31