VII. Java Basic (5)

Gunju Kim·2024년 8월 29일
post-thumbnail

배열 복습

alt text

  • 동적 배열에 관해 들어가기에 앞서 먼저 기본 배열에 대해서 다시 짚어보자.
  1. 배열은 기본적으로 변수를 저장하는 공간을 의미한다. 개발자가 어떤 변수를 다룰때 그 변수를 미리 저장하여 변수를 일일이 불러오지 않고도 그 변수가 속한 배열의 방을 불러오기만 하면 언제든지 해당 변수를 불러와서 코드에 적용시켜서 사용할 수 있다.

하지만 문제는 언제나 있다.

  1. 배열의 문제점:
  • 배열의 문제점은 변수를 지정해주는 공간의 양을 미리 설정해놓아야 된다는 점, 그리고 설정해줘야 되는 변수의 양이 설정해준 배열 공간의 양을 넘어가면 담아지지도 않고, 배열의 변수를 제거할 때마다 사용자 본인이 직접 제거해야 된다는 점. 사용자가 직접 모든 것을 하나씩 다 해야 되기 때문에 실수가 발생할 수도 있고, 방대한 양의 변수를 한번에 다루기에는 리스크가 큰 변수 설정 방법이다.

alt text

  1. 그리고 무엇보다 좋지 않은점. 제거가 불가능 하다. 아니, 정확하게 말해서 배열에서 요소를 삭제하는 것은 불가능하다. 삭제된 것처럼 보이게 하는게 삭제라고 하면 뭐 얼추 맞는 말이지만, 그래도 배열에서 요소가 완전히 삭제되지는 않는다. 나머지 요소까지 다 날리지 않는 한...
// 못해먹겠다 -> true

결국은 이 결과 값에 도달한다. 따라서 이 복잡한 것을 해결할 수 있게 해주는 동적 배열에 대해서 알아가보자.

동적 배열 (ArrayList)

alt text

동적 배열은 위와 같은 방식으로 설정해주면 되는데, 기존에 쓰던 배열 방식:

String[] name = new String[10];
int[] num = new int[10];

이딴식으로 설정해주면 당연히 안된다. 설정해주는 방법부터 다르기 때문에 잘 살펴보자.

  • 동적 배열 설정 방식:
ArrayList<Integer> list = new ArrayList<>();
ArrayList<String> str = new ArrayList<>();

기존에 쓰던 배열 방식에서는 int 라는 표현은 Integer의 원시형(Primitive) 타입이다. ArrayList 라는 방에 들어갈 손님을 설정해줄때는 원시적인 느낌이 아니라 좀더 포멀하게 제대로 차려입은 참조 타입으로 지정해주어야 들어갈 수 있다라고 비유하겠다. 기존 배열 arr 가 3성급 모텔이라면 ArrayList 는 5성급 호텔인것이다. 이렇게 생각하자.

따라서 참조 타입으로 입력해주어야 ArrayList에서 인식을 하고 손님을 체크하고 들여보내 준다.

원시형 vs 참조형

좀더 자세하게 알아보고 싶으면 위의 링크를 참고해 보자.

  • 동적 배열에서 변수 설정하기:
list.add(0);

생각보다 간단하다. 설정해준 ArrayList 이름에 .add 만 붙이고 타입에 해당하는 값을 넣어주면 된다.

  • 동적 배열에서 변수 제거하기:
list.remove(0);

add의 반대인 remove를 list 의 옆에 붙이고 제거하고 싶은 방의 번호를 입력하면 그 방에 지정된 값이 사라진다. 다만 여기서 주의할 점이 있다.

alt text

  • 위의 이미지는 간단하게 ArrayList의 방을 표현한거고 그 안에 ABCD 라는 변수가 1번부터 4번까지 차례로 담겨있는 것이다. 만약에 위의 그림처럼 1번에서 A라는 변수를 제거하면 ArrayList는 제거한 것을 인식하여 방을 한칸 줄이고 뒤에 있는 변수들을 앞으로 한칸씩 다 옮겨준다. 그러면 위에처럼 1번에서 A가 삭제되었을 경우 B가 1번 자리로 C가 2번, D가 3번이 된다. 그래서 만약에 여기에서 A와 B를 동시에 없애고 싶으면
list.remove(0);
list.remove(1);

이렇게 코드를 치면 안된다. 이렇게 되면 A와 C가 없어지게 된다는 말이다.

list.remove(0);
list.remove(0);

이렇게 쳐줘야 A와 B를 변수에서 제거 하는 것이 가능하다.

할말이 더 많이 남아있지만 나머지 설명은 2부에서 이어지도록 하겠다.

profile
처음이라서 그래 가본적 없던 길에

0개의 댓글