• java에서 LIST는 여러 개의 요소를 저장하는 자료구조로서 배열과 다르게 요소의 추가/삭제가 가능
  • List는 인터페이스로서, ArrayList, LinkedList 등의 List 인터페이스를 구현한 자료형이 존재
    • 여기서는 ArrayList, LinkedList 등을 포괄하는 List라는 큰 틀이 있고, 세부 내역으로서 ArrayList, LinkedList 등이 있다 정도로 이해. 구체적으로 인터페이스가 무엇인지는 추후 인터페이스에서 학습
  • 기본문법
    • ArrayList<String> pitches = new ArrayList<String>();
      • ArrayList<String> pitches = new ArrayList<>();
        • 일반적으로 뒷부분의 자료형은 생략
      • List<String> pitches = new ArrayList<>();
        • 가장 일반적인 선언방식으로 앞부분의 ArrayList대신에 인터페이스인 List자료구조를 선언하고 뒷부분에서 ArrayList를 선언.
      • ArrayList는 가장 많이 사용되는 List의 구현체
  • 특징
    • 리스트의 크기는 정해져 있지 않고 동적으로 변하므로 add, remove등의 추가/삭제가 가능
    • 배열처럼 index를 기반으로 데이터 접근. ex)리스트객체명.get(index)
  • 컬렉션 프레임워크
    • List 인터페이스, Set 인터페이스, Map 인터페이스 등 다수의 데이터를 처리하는 클래스의 집합

      Untitled

    • Collection이라는 부모 인터페이스의 기능을 상속받다 보니 유사한 메서드들을 많이 공유

      • contains, equals, isEmpty, size, toArray 등
    • 컬렉션프레임워크에서는 자료타입으로 기본형타입을 쓸 수 없고 wrapper클래스를 써야 함에 유의

      • 객체사용의 일관성 및 wrapper클래스에서 제공하는 다양한 기능 사용을 위한 목적
      • Java 언어의 초기 설계 시 배열과 기본형 데이터 타입은 빠르고 효율적으로 다루기 위해 설계되었으나, 컬렉션 프레임워크는 추후 추가된 것으로, 더 객체 지향적인 설계를 반영
    • Arrays는 컬렉션프레임워크에 속하진 않으나, 배열과 컬렉션 프레임워크 간의 변환 및 작업을 위한 도우미 메서드를 제공

      • Arrays.asList 등
  • 리스트 초기값 생성
    • 빈 list 생성 후 add
      • List<String> pitches = new ArrayList<>();
      • pitches.add("321");
      • pitches.add(“123");
    • 리스트 값 주입
      • List<String> pitches = new ArrayList<>(Arrays.asList("123", "213", "321"));
      • List<String> pitches = new ArrayList<>(List.of("123", "213", "321"));
  • 주요 메서드
    • size()
      • 리스트 안에 있는 요소의 수를 반환
    • isEmpty()
      • 리스트가 비어 있는지 여부를 반환
    • add(E element)
      • 리스트 끝에 지정된 요소를 추가
    • add(int index, E element)
      • 특정 index 위치에 요소를 삽입
    • addAll(Collection<? extends E> c)
      • 특정 리스트에 다른 특정 리스트 요소를 모두 add
    • get(int index)
      • 특정 위치에 있는 요소를 반환
    • set(int index, E element)
      • 특정 위치에 있는 요소를 지정된 요소로 대체
    • remove(int index)
      • 지정된 위치의 요소를 제거하고 그 요소를 반환
    • remove(E element)
      • 지정된 객체가 리스트 내에 있으면 그 객체를 찾아 삭제
      • 발견되는 첫 번째 객체를 삭제
    • clear()
      • 모든 요소를 제거
    • contains(E element)
      • 특정 요소를 포함하고 있는지 확인하여 true/false 리턴
    • indexOf(E element)
      • 지정된 요소가 위치한 인덱스 중 첫번째 값을 반환
      • 리스트가 해당 요소를 포함하지 않으면 -1을 반환
  • 리스트의 출력
    • 이미 toString을 상속하여 내부적으로 호출하고 있으므로 리스트를 출력할때는 배열과는 다르게 별도로 toString을 호출할 필요는 없음
    • 그래서 리스트객체 출력시 메모리 주소가 아닌 value값이 문자열 형태로 출력
  • 리스트의 정렬
    • 컬렉션 클래스를 이용한 정렬
      • Collection은 List, Set, Queue 등의 상위 인터페이스
        • Collection에 내장된 메서드는 하위 객체에서 사용가능
      • List<Integer> numbers = new ArrayList<>();
        • 오름차순
          • Collections.sort(numbers);
        • 내림차순
          • Collections.sort(numbers, Comparator.reverseOrder());
    • 리스트내의 내장함수 이용
      • java8이상부터 사용
      • List<Integer> numbers = new ArrayList<>();
        • 오름차순
          • numbers.sort(Comparator.naturalOrder());
        • 내림차순
          • numbers.sort(Comparator.reverseOrder());
        • Comparator
          • Java에서 두 객체를 비교하는 함수형 인터페이스
          • 주로 객체들의 컬렉션을 정렬할 때 사용
          • 주로 객체의 정렬을 customizing할 때에 사용
            • 예를 들어, 학생 객체의 성적별 정렬
            • 추후 학습