※ 제가 편하게 복습하려고 구어체로 작성했습니다.
※ 초보 개발자의 공부 겸 정리 포스팅이라 틀린 부분이 있을 수 있습니다.
List와 ArrayList란?
리스트는 배열의 한계 때문에 만들어진 자료형이야.
일반적인 배열의 경우 int[] a = new int[10] 이런 식으로 크기를 정해주어야 하는데, 크기가 얼마일 지 예상할 수 없는 경우가 많아. 그럴 때 사용하는 것이 List라고 할 수 있지. 리스트는 메모리가 허용하는 한 계속해서 크기를 늘릴 수 있는 자료형 클래스
거든.
List와 ArrayList는 뭐가 다른가요?
List는 Object처럼 미리 정해져 있는 ArrayList의 상위 클래스(부모 클래스)야.
즉, 인터페이스 클래스라고 할 수 있지.
ArrayList, Linked List, Vector, Stack 클래스들 중 하나를 인스턴스화 해서 List를 사용할 수 있어. 다시 말해 List는 인터페이스, ArrayList는 List를 상속 받아 만들어진 클래스
야. ArrayList는 List 외에도 Serializable, RandomAccess 인터페이스 등을 구현할 수 있어.
List와 ArrayList는 어떻게 사용하나요?
- 자료형을 사용하지 않고 선언할 때
이 경우 String, int 등 다양한 타입의 객체를 섞어서 저장할 수 있어.
회원 정보를 하나의 리스트로 저장할 때 이렇게 사용할 수 있겠지?1
2
3List list = new ArrayList(); // ArrayList가 List를 상속 받기 때문에 이렇게 쓸 수 있겠지 ArrayList list2 = new ArrayList();
- 자료형을 사용해서 선언할 때
당연히 자료형을 선언하면 그 자료형만 들어갈 수 있겠지.1
2List<String> list = new ArrayList<String>(); ArrayList<Integer> list2 = new ArrayList<Integer>();
리스트에 값 추가(add)하고 꺼내고(get) 제거(remove)하기
값 추가하기 : 리스트명.add(추가할 값);
1 |
|
add(index, 넣을 값)
의 경우 해당 인덱스 값이 교체되는 것이 아니라 하나씩 밀려나게 돼.
위 코드를 출력해보면 [예시, 첫번째 예시, 12345] 순서로 출력되겠지.
값 꺼내기 : 리스트명.get(인덱스번호);
1 |
|
list.get(index);는 List<Element> subList(int fromIndex, int toIndex);
처럼도 쓸 수 있어.
subString과 비슷하지?
값 지우기 : 리스트명.remove(인덱스번호); 또는 리스트명.remove("값");
1 |
|