메모리크기는 한정적이기 때문에 유동적으로 메모리를 할당하고 비효율적인 메모리낭비를 막을 수 있게 해줍니다.
ArrayList
key와 value의 쌍 / key값은 인덱스이고, value값은 실제 값입니다. 이 때 key값은 숫자만 가능하고 기존 배열은 크기를 미리 지정하여, 메모리를 미리 할당받지만, ArrayList는 필요할 때마다 메모리를 할당받아 사용합니다. 배열의 경우 값을 삭제하여도 공간은 남아있지만, ArrayList인 경우 공간도 같이 사라지므로 메모리 낭비를 막을 수 있습니다.
선언
1
import java.util.ArrayList;
2
3
ArrayList<데이터타입> 변수이름 = new ArrayList<데이터타입>();
4
5
ex) ArrayList<String> cafe = new ArrayList<String>();
값 추가
1
ArrayList변수명.add(값);
배열과 달리 미리 메모리공간이 확보되어 있는 것이 아니라, add를 통해 값을 넣을 떄, 메모리가 할당되면서 거기에 값을 사용합니다. 인덱스를 통해 값을 넣어주는 것이 아니라, 자동으로 맨 마지막에 값을 넣어줍니다.
1
cafe.add("americano");
2
// americano를 cafe의 ArrayList에 넣어줍니다.(자동으로 제일 마지막 위치)
3
4
cafe.add(1, "latte")
5
// latte를 1번 인덱스 자리에 넣어줍니다. 1번이 비어있을 경우 2번에 넣을 수 없습니다.
1
// ArrayList의 크기를 가져올때는
2
cafe.size()
3
4
// index로 ArrayList의 값 가져오기&지우기
5
cafe.get(1);
6
cafe.remove(1);
7
8
// ArrayList모두 삭제
9
cafe.clear();
Hashtable
key와 value의 쌍. key값을 무조건 숫자로 할 필요 없이, 원하는 값으로 둬도 됩니다.숫자 인덱스가 없으므로, ArrayList처럼 인덱스 값으로 value를 가져올 수 없습니다.