본문 바로가기

JAVA/Coding

[JAVA] ArrayList 말고 배열에 데이터 추가하는 방법 <3

 

 

 

 

 

 

//coffee에 "사라다빵"을 추가하려면?
String[] coffee = new String[]{"따아","연유라떼","아샷추"};

 

String[] 배열 coffee안에 "따아", "연유라떼", "아샷추"가 추가되어있다.

 

마지막 자리에 "바닐라라떼"를 추가하고 싶을 때 쓰는 방법을 알아보자.

( ArrayList를 쓰면 편하겠지만 안쓰고 하는 방법에 대해 알아보려고 함)

 

Python을 한 사람은 알것이다. coffee 배열에 coffee.append("바닐라라떼")라고 하면 되겠지?

 

[Python]

# 기존 리스트
음료목록 = ["따아", "연유라떼", "아샷추"]

# 새로운 요소 추가
음료목록.append("바닐라라떼")

# 결과 출력
print(음료목록)

 

파이썬은 아주 쉽게 된다.

자바는 ㄴㄴ안됨

 

 

왜냐면

 

 

자바의 배열 특성 상, 특정 인덱스에 접근하려면 그 인덱스의 자리가 있어야함.
리스트의 크기가 3으로 정해져 있는데 하나를 더 추가할 경우 "Exception"에러가 발생함.

그래도 ArrayList라고 하는녀석은 배열의 크기를 자동으로 조절해줘서 따로 인덱스 자리확보를 안해도됨

 

int coffeeLength = coffee.length+1;

 

 

그래서 우선 coffee배열의 크기를 가지고 와서 뒤에 추가할 데이터의 수만큼 + 해줌

 

String[] coffee2 = new String[coffeeLength];

 

 

그런 다음 coffee2라는 배열을 하나 더 생성해서 배열의 크기를 coffeeLength만큼 생성해줌

 

for (int i=0; i<coffee.length; i++) {
    coffee2[i] = coffee[i];
}

coffee2[3] = "바닐라라떼";

 

for문으로 coffee에 있는 데이터들을 coffee2에도 똑같이 넣어준다음

늘어난 인덱스를 가진 coffee2의 원하는 자리에 "바닐라라떼"를 넣어주면 배열뒤에 데이터를 넣을 수 있음.

 

for (String menu : coffee2) {
    System.out.println(menu);
}

 

출력해보자

 

 

Perfect

 

String[] coffee = new String[5];

 

 

그래서 사실 이런식으로 인덱스의 자리를 확보해주고 난 뒤 데이터를 넣어주는게 좋긴하지만

기존 배열에서 추가해줘야 할 경우 첫번째 방법대로 해주는게 맞다.

사실 고정된 자리가 필요한 경우,  간단한 데이터 구조나 성능이 중요한 경우에만 배열을 쓰고

그게 아닐경우에는 ArrayList를 써주는게 좋음.

반응형