(JAVA) List, ArrayList의 차이점과 사용법

※ 제가 편하게 복습하려고 구어체로 작성했습니다.
※ 초보 개발자의 공부 겸 정리 포스팅이라 틀린 부분이 있을 수 있습니다.

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는 어떻게 사용하나요?

  1. 자료형을 사용하지 않고 선언할 때
    이 경우 String, int 등 다양한 타입의 객체를 섞어서 저장할 수 있어.
    회원 정보를 하나의 리스트로 저장할 때 이렇게 사용할 수 있겠지?
    1
    2
    3
    List list = new ArrayList(); 
    // ArrayList가 List를 상속 받기 때문에 이렇게 쓸 수 있겠지
    ArrayList list2 = new ArrayList(); 
    
  2. 자료형을 사용해서 선언할 때
    당연히 자료형을 선언하면 그 자료형만 들어갈 수 있겠지.
    1
    2
    List<String> list = new ArrayList<String>();  
    ArrayList<Integer> list2 = new ArrayList<Integer>();
    

리스트에 값 추가(add)하고 꺼내고(get) 제거(remove)하기

값 추가하기 : 리스트명.add(추가할 값);

1
2
3
4
List list = new ArrayList(); 
list.add("예시");
list.add("12345");
list.add(1, "첫번째 예시");   // 인덱스 첫번째 자리에 "첫번째 예시" 라는 문자열을 넣음.

add(index, 넣을 값)의 경우 해당 인덱스 값이 교체되는 것이 아니라 하나씩 밀려나게 돼.
위 코드를 출력해보면 [예시, 첫번째 예시, 12345] 순서로 출력되겠지.


값 꺼내기 : 리스트명.get(인덱스번호);

1
2
list.get(0); // 0번째 인덱스를 꺼내라 → [예시] 출력
list.get(0,3); // 0번 인덱스부터 3번째 직전 데이터를 꺼내라 → [예시, 첫번째예시] 출력 

list.get(index);는 List<Element> subList(int fromIndex, int toIndex); 처럼도 쓸 수 있어.
subString과 비슷하지?


값 지우기 : 리스트명.remove(인덱스번호); 또는 리스트명.remove("값");

1
2
list.remove(0); // 0번째 값을 삭제해라. 
list.remove("12345"); // "12345"를 찾아 삭제해라.