본문 바로가기
개발공부하며 느낀 인생 공부

List 와 ArrayList 알기 쉽게 간단 정리와 활용

by 날파리1 2022. 7. 6.

List 와 ArrayList

일단 오늘은 ArrayList 에 대해 알게 된게 있어서 기록하고 넘어가려고 한다. 

우선 List 는 추상적개념이라서 선언할 때 쓴다  리스트 + 타입명  이런 식으로

ArrayList 는 실체화시키는 명령어로 리스트형태의 배열을 생성할 때 쓴다.

 

List 와 배열과의 차이

우리가 자바를 배울 때 처음 접하기 쉬운 배열

int[] variable name =  new int[] {1.2.3,4}

String[] variable name = new String[] {"자바","파이선","자바스크립트"}

 

이것들과의 차이는 

일반 배열은 생성할 때 각 값의 인덱스(자릿수 혹은 메모리 주소로 이해)가 지정되어있어 배열의 이동이 불가능하다.

하지만

1. List 는 동적 배열이라 배열의 추가와 생성이 자유롭다.

2. 배열의 요소를 삭제하면 List는 삭제한 요소의 인덱스를 뒷 인덱스에 있던 요소가 메운다.

 

자바에서의 카피

자바는 객체지향언어로 객체들의 원본 값을 지켜주기 위해 객체의 값을 바로 가져오는 getter를 싫어하는 것 같다.

private int amount = 1000;

 

public int getAmount() {

return amount; }  -> 이런 방식의 게터 말이다.

 

그래서 원본값을 지켜주기위해 사본을 만든뒤 그것을 가져온다고 하는데 배열에서 그것을 하다가 느낀게 있다. 예제를 보자

 

배열의 카피본(복사본)만들기 = new ArrayList<>(복사할 배열 이름)

위 사진 처럼 woolala라는 리스트 배열을 만들었다. 그리고 요소를 더해주었다.

그리고 세컨드 타입이라는 또 다른 리스트 배열을 만들었느데 그때 ArrayList<>(woolala);  와 같이 어레이리스트 괄호에 리스트를 넣어주니 그대로 같은 값을 가진 secondType의 리스트가 생성이 되었고 프린트아웃으로 출력 결과를 아래에서 확인 할 수 있었다.

 

리스트 복사 예시

리스트는 = 을 쓰더라도 그 값을 넣는게 아니라 동일한 값 주소를 가르킨다.

woolala라는 리스트를 생성하고 값을 넣어 주었다. 

그리고 secondType 이라는 리스트를 선언 후 woolala라는 리스트값을 넣는다? 라고 가정하고

이후 secondType에 새로운 값을 다시 추가한 뒤 woolala를 프린트했느데 적용이 되어서 나왔다.

무슨말이냐면 걍 woolala == secondType이라는 뜻. 

신기해서 기록으로 남긴다.

리스트에 다른 리스트 더해주기 ->   데이터를 담을 List 변수 이름 명.addAll(넣어줄 다른 List 변수 이름 명)

이것 다른 곳도 잘나오는 그냥 리스트의 메소드중 하나니 넘어가도록 하겠다.

 

아무튼 변수의 복사해서 가져오는 걸 좀 정리가 안됬는데 이렇게 정리한다. 추가로 더할 것 있으면 추가하겠다.

댓글