1. List?

  1. [설명]
    1. 저장된 Element(요소)들의 순서가 있고 데이터에 중복이 가능하고 인덱스(Index) 번호에 의해서 정렬됨(배열과 비슷한 동작을 함)
  2. [특징]
    1. 컬렉션(Collection) 인터페이스 중 하나임
    2. 두 개의 종류로 나눠짐
      1. ArrayList → 배열로 이루어진 리스트
      2. LinkedList
    3. 크기 조절이 가능함
    4. 초기 크기를 지정하지 않아도 됨
    5. 삭제는 공간을 지우는 것임
  3. [사용법]
    1. List<자료형> 리스트 명 = new ArrayList(or LinkedList)<자료형(생략가능)>();
    2. [선언시]
      1. import java.util.ArrayList; ArrayList선언 시
      2. import java.util.LinkedList; LinikedList선언 시
      3. import java.util.List; List 선언 시
    3. ArrayList나 LinkedList를 사용하기 위해서는 java.util패키지에 있는 ArrayList나 LinkedList, List를 선언해줘야함
    4. <> : 제네릭이라 함!
      1. 제네릭은 JDK 1.5부터 시행됬으며, 1.5이전에는 제네릭이 없어서 메서드를 사용때 마다 **(타입)**을 선언해줘야하는 번거로움이 있음

      2. [예제]

        Integer iData = (Integer)a.get(0);
        String strData = (String)a.get(0);
        
      3. 제네릭[Wrapper Class로 지정해줘야함]

        1. Integer, Long, Double, Float, String
  4. [주요기능]
    1. List.add(값);
      1. 데이터 삽입
    2. List.add(index, value);
      1. 중간삽입
      2. [index]
        1. 중간에 넣을 인덱스(배열 인덱스)
      3. [value]
        1. 중간에 넣을 값(중간에 값을 넣을 경우 중간에 넣은 값 이후에 값들은 한 칸씩 밀리게 됨)
    3. List.set(index, value);
      1. 치환, 중간 삽입과 비슷함
      2. [index]
        1. 치환할 값 자리에 인텍스임
      3. [value]
        1. 치환할 자리에 값임
    4. List.remove(index);
      1. 삭제
      2. [index]
        1. 인덱스 위치에 있는 값을 삭제함
    5. List.clear();
      1. 전체 삭제
      2. 모든 요소를 삭제함
    6. List.get(index);
      1. 출력
      2. [index]
        1. 인덱스 위치에 있는 값을 출력
    7. List.size();
      1. 사이즈
      2. 리스트에 크기를 알 수 있음

2. ArrayList?

  1. [설명]

    1. Element(요소)를 순차적으로 추가하는 게 특징임
    2. 배열과 매우 유사하며 배열은 배열 선언 시 사이즈도 같이 지정해 줘야 하는데 ArrayList는 사이즈를 지정하지 않아도 되며 추가될 때 마다 사이즈가 정해짐
  2. [예제1]

    ArrayList<Integer> intList = new ArrayList<Integer>(); // 타입 지정
    ArrayList<Integer> intList2 = new ArrayList<>(); // 타입 생략 가능
    ArrayList<Integer> intList3 = new ArrayList<>(10); // 초기 용량(Capacity) 설정
    ArrayList<Integer> intList4 = new ArrayList<>(intList); // 다른 Collection값으로 초기화
    ArrayList<Integer> intList5 = new ArrayList<>(Arrays.asList(1, 2, 3, 4, 5)); // Arrays.asList()
    
  3. [예제2]

    import java.util.ArrayList;
    
    public class ArrayListTest {
        public static void main(String[] args) {
    				// ArrayList 생성
            ArrayList<String> colors = new ArrayList<>();
            // add() method
            colors.add("Black");
            colors.add("White");
            colors.add(0, "Green");
            colors.add("Red");
    
            // set() method
            colors.set(0, "Blue");
    
    				// output[출력]
            System.out.println(colors);
    				// [Blue, Black, White, Red]
        }
    }
    

3. LinkedList?

  1. [설명]
    1. 서로 링크되어 있다는 특징을 가짐

    2. 하나에 리스트에는 다음 리스트와 이전 리스트의 주소들이 서로 연결되어 있음

      1. [예제]
        1. 10 ⇄ 20 ⇄ 30 ⇄ 40
    3. 기본 LinkedList는 리스트 마다 처음 리스트와 마지막 리스트를 제외하고 이전 리스트와 다음 리스트에 주소가 연결되어 있음

      1. [예제]
        1. 10 ⇄ 20 ⇄ 40
    4. 30번을 리스트를 삭제할 경우 20번 리스트와 40번 리스트에 연결을 끊고 20번 리스트와 40번 리스트가 새로 연결됨

    5. [예제]

      import java.util.LinkedList;
      import java.util.List;
      
      public class LinkedListTest {
      	public static void main(String[] args) {
      		// LinkedList 생성
      		List<Integer> list = new LinkedList<>();
      
      		// add() : 삽입
      		list.add(1);
      		list.add(2);
      		list.add(3);
      
      		// Iterator 를 이용해 List 값 출력
      		for(int addList : list) {
      			System.out.printf("addList:%d ", addList);
      		}
      		System.out.println();
      
      		// List set(수정)
      		list.set(2,5);
      
      		// Iterator 를 이용해 수정된 List 값 출력
      		for(int setList : list) {
      			System.out.printf("setList:%d ", setList);
      		}
      		System.out.println();
      
      		// List Remove(삭제)
      		list.remove(1);
      
      		// 일반 for문을 이용하여 list 값을 출력
      		for(int i = 0; i < list.size(); i++) {
      			// get() : 리스트에 값을 출력해줌
      			System.out.printf("listSize:%d ", list.get(i));
      		}
      		System.out.println();
      	}
      }
      
      // 결과물
      /*
      		addList:1 2 3
      		setList:1 2 5
      		listSize:1 5
      */