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 변수 이름 명)
이것 다른 곳도 잘나오는 그냥 리스트의 메소드중 하나니 넘어가도록 하겠다.
아무튼 변수의 복사해서 가져오는 걸 좀 정리가 안됬는데 이렇게 정리한다. 추가로 더할 것 있으면 추가하겠다.
'개발공부하며 느낀 인생 공부' 카테고리의 다른 글
너무 가까이 보면 당연한 것도 보이지 않는다[20220708 til2] (0) | 2022.07.09 |
---|---|
복습의 복습의 복습 이월된..주간회고[메가테라 9주차라 쓰고 이월 3주차 회고] (0) | 2022.07.08 |
자바 필드화와 관심사의 분리 그리고 기승전..멘탈^-^[20220706 til] (1) | 2022.07.06 |
프로처럼 일하고 공부하기 [이이일찍 쓰는 220705 TIL] (0) | 2022.07.05 |
혼자 보다 둘이 낫고 같이 가야 빨리간다.[220704 TIL] (6) | 2022.07.05 |
댓글