본문 바로가기
IT/Java

자바 List(ArrayList, LinkedList)

by flatsun 2019. 1. 31.
반응형

요번에는 List에 대해 한번 알아보자


List는 배열인데 일반 배열처럼 크기를 정해놓고 쓰는 배열이 아니라

배열 크기를 자유롭게 변경할 수 있다



사진을 보면 일반 배열은 무조건 크기를 정해놓고 사용해야 하지만

list의 경우에는 크기 제한이 없기 때문에


맘대로 붙였다 지웠다 할 수가 있다



보면 그냥 배열은 한번 크기 정하고 넣으면 배열 값을 바꿀 수는 있어도

해당 배열을 삭제할 방법이 없다


한번 3개로 정해 놨으면 영원히 3개인 것인데


list는 add로 붙였다가 remove로 지울 수 있다


이 말은? 출력을 해 보면 알게 될 텐데



그냥 배열은 짤없이 크기 고정이지만

List는 고무줄처럼 add로 늘리고

remove로 지울 수 있다!!


이제 바로 실전압축으로 요약 들어간다


먼저 List의 특징은

일반 배열과 다르게 크기를 맘대로 늘였다 줄였다 가능하고

(add 쓰면 늘어나고 Remove 쓰면 줄어들고..)

중복데이터를 저장 가능하고

값을 넣는대로 값이 순차적으로 들어간다

(add 한 순서대로 값이 들어간다!!)


List는 ArrayList와 LinkedList로 나뉘는데

Vector와 Stack도 있지만

두개를 하는 이유는


면접때 ArrayList와 LinkedList의 차이만 죽어라 물어보기 때문이다


ArrayList는 데이터를 저장하고 검색하는데 더 유리하고

LinkedList는 다량의 데이터를 삽입 삭제하는데 더 유리하다


졸라 간단하니까 두줄만 외우면 면접에서 한문제 뚝딱 가능하다


근데 막상 사용하다 보면 ArrayList만 사용하게 되는데

다량의 데이터를 삽입, 삭제해서 차이를 느낄 만큼 데이터를 많이 다루지 않기 때문에

어떤 List를 쓰나 실행 누르면 바로 결과가 나오기 때문이다!!


하지만 ArrayList와 LinkedList의 차이점은 알아두고


바로 사용법으로 넘어간다



일반 배열의 경우에는 

배열명[배열 번호] = 값;

arr[0] = 3;

이런 식으로 작성한다


하지만 list의 경우에는

리스트명.add(값);


 이런 식으로 이루어지는데

배열은 배열 번호에 값을 넣지만

리스트는 그냥 add로 값을 넣는다


그 말은??


add를 붙이는 대로 순서가 만들어지는 것이다!!



각각 출력 시 배열은 0번을 지정해서 0번이 나오지만

list는 순서를 지정해주지 않았는데도 0번 부르니까 나오는데

넣는 순서대로 0.1.2.3.4 이렇게 순서를 채우기 때문이다!!


근데 이렇게 되면 중간에 끼워넣기가 안되는건가?

이렇게 생각을 할 수도 있는데




리스트명.add(배열 번호, 값);

을 통해 값을 끼워넣어줄 수 있다!!


이렇게 0번에 5를 넣어버리고 7은 1번 자리로 밀어버릴 수 있다


출력을 해 보면..



이거 말고 그냥 값을 변경하는 건 안될까요?


이것 역시 가능하다



리스트명.set(배열 번호, 값);


을 통해 해당 번호의 값을 바꿔버릴 수도 있다


다음은 List의 Remove에 대해서 알아본다


일반 배열은 삭제가 안되서 넣어도 지우지 못해 눈물이 다 나는데

list의 경우에는

리스트명.remove(지울 배열 번호);


를 통해 깔끔하게 지울 수 있다


값만 지워지고 안지워지는거 아녀?

이럴 수 있는데



출력을 해 보면 remove를 통해 배열 길이가 바뀌었음을 알 수 있다


마지막으로 이렇게 만든 list를 배열로 만들어야 할 때도 있는데

list를 배열로 만드는 방법을 한번 알아보자



먼저 리스트 안에 add를 사용해 0,1,2번에 해당하는 값을 넣는다


그 다음에


변수 자료형 변수명[] = list명.toArray(new 변수 자료형[배열 크기] );


이렇게 작성하면 해당 변수 자료형에 맞게 

list의 내용이 배열 arr[] 안으로 깔끔하게 들어간다


이제 출력을 해 보면 잘 들어갔는지 알 수 있는데



아주 깔끔하게 잘 들어간 것을 알 수있다


그러니까 list를 배열로 만들라면 for문 돌리면서 넣는 개삽질 할 필요 없이

toArray를 통해 한줄로 깔끔하게 넣을 수 있다!!


마지막으로 간단하게 요약정리 들어가는데


1. list는 배열이지만 크기를 맘대로 조절할 수 있다

2. ArrayList, LinkedList가 주로 사용되는데 각각 데이터 저장과 검색 / 다량의 자료 삽입, 삭제 등에 유리하다

3. list안에 add로 넣고 set으로 고치고 remove로 지우고 size를 통해 길이를 알 수 있다

4. toArray를 통해 list를 배열로 변환할 수 있다

반응형

댓글