ABOUT ME

작은 디테일에 집착하는 개발자

Today
-
Yesterday
-
Total
-
  • [Java] 컬렉션 프레임워크 1 (컬렉션 인터페이스)
    IT Study/컴퓨터 기초 2023. 3. 28. 01:09
    728x90

    오늘은 (수업시간에) 컬렉션 프레임워크에 대해 배웠습니다.

    자바에서 많이 사용하는 만큼 개념을 정확히 잡고 가야 할 것 같아, 블로그 글로 정리하고자 합니다.

     

    1. 컬렉션 프레임워크란?

    다수의 데이터를 처리하기 위한 자료구조들을 표준화하여 인터페이스와 클래스로 구현한 것.

     

    1-1. 컬렉션 프레임워크 구성 요소

    인터페이스 : 컬렉션의 공통 기능을 선언하는 역할을 합니다.
    클래스 : 인터페이스를 구현한 컬렉션 클래스로, 실제 동작을 구현합니다.
    알고리즘 : 컬렉션 데이터를 처리하는 데 사용하는 메서드를 정의합니다.

     

     

    위 그림은 Collection 프레임워크의 구성을 보여줍니다.

    Collection과 Map이라는 최상위 인터페이스 아래 다양한 인터페이스와 클래스들이 존재합니다.

     

    Collection(인터페이스) 아래 List와 Set(인터페이스)가 존재하고,

    이들 인터페이스 아래 ArrayList, LinkedList 그리고 HashSet, TreeSet 등의 클래스가 존재합니다.

     

    또한 Map(인터페이스) 아래 HashMap, SortedMap 등의 클래스가 존재합니다.

     

    1-2. 컬렉션 프레임워크.. 왜 사용하나요?

    자바의 컬렉션 프레임워크는 다양한 자료구조를 제공합니다.

    특히 이미 구현된 자료구조(컬렉션 프레임워크)를 제공하기 때문에, 개발자가 직접 자료구조를 구현하지 않고도

    필요한 구조를 쉽게 사용할 수 있어 개발 시간 단축과 코드의 재사용성을 높일 수 있습니다.

     

    2. Collection 인터페이스란?

    컬렉션 프레임워크의 최상위에 위치하는 인터페이스로, 요소들을 모아 관리하기 위한 표준 인터페이스입니다.

    특히 아래에서 다룰 List, Set 인터페이스(+ Queue 인터페이스)는 Collection 인터페이스를 상속하여,

    Collection 인터페이스가 제공하는 공통적인 기능에 더해 각 특성에 맞는 메서드를 제공합니다.

     

    2-1. Collection 인터페이스가 제공하는 공통적인 기능⭐️⭐️⭐️

    이름 매개변수 기능 반환타입
    add(E e) 추가할 요소 컬렉션에 요소추가 boolean, 추가 시 true
    addAll(Collection c) 추가할 컬렉션 컬렉션에 타 컬렉션 객체 추가 boolean, 추가 시 true
    clear() - 컬렉션의 모든 객체 삭제 -
    contains(Object o) 찾을 객체 컬렉션에서 객체 포함하는지 확인 boolean, 포함 시 true
    containsAll(Collection c) 확인할 컬렉션 컬렉션에 타 컬렉션 객체를 모두 포함하는지 확인 boolean, 모두 포함 시 true
    equals(Object o) 비교할 객체 컬렉션과 객체가 동일한지 확인
    (요소, 순서, 중복 등)
    boolean, 동일 시 true
    isEmpty() - 컬렉션 비어 있는지 확인 boolean, 비어  있으면 true
    Iterator<E> iterator() - 컬렉션의 객체를 하나씩 가져오기 위한
    반복자(Iterator) 반환
    Iterator 객체
    remove(Object o) 삭제할 객체 컬렉션에서 객체 삭제 boolean, 삭제 시 true
    removeAll(Collection c) 제거할 컬렉션 컬렉션에 타 컬렉션 객체를 모두 삭제 boolean, 삭제 시 true
    retainAll(Collection c) 보존할 컬렉션 컬렉션에 타 컬렉션 객체 외 모두 삭제 boolean, 보존 시 true
    size() - 컬렉션의 객체 수 반환 int
    toArray() - 컬렉션 객체를 배열로 반환 Object[]
    toArray(T[]) 복사하도록
    지정된 배열
    컬렉션의 요소를 지정한 배열에
    복사하여 반환
    T[]
    *toArray()와 toArray(T[]) 차이

    ArrayList에서 toArray()를 호출하면 Object 타입의 배열이 반환되며,
    toArray(new String[0])를 호출하면 String 타입의 배열이 반환됩니다.

    만약 ArrayList에 Integer 타입의 요소가 저장되어 있고
    toArray(new String[0])를 호출하면 컴파일 오류가 발생합니다.

     

    2-1-1. Iterator 인터페이스

    컬렉션의 요소를 순회할 때 사용하는 인터페이스로, 아래와 같은 메서드를 가지고 있습니다.

    이름 매개변수 기능 반환타입
    hasNext() - 컬렉션의 다음 요소 유무 확인 boolean, 다음 요소 존재하면 true
    next() - 컬렉션의 다음 요소 반환 E
    remove() - 컬렉션의 현재 요소 제거 -

     

    2-1-2. reverse 메서드

    Collections 클래스에서 제공하는 Collections.reverse(List<?> list)를 사용하여  List를 역순으로 만들 수 있습니다.

    reverse는 전달된 리스트를 직접 수정합니다. 어떠한 리스트에서도 호출이 가능하다는 장점이 있으니,

    컬렉션 프레임워크의 List를 사용하며 유용하게 사용하면 좋을 것 같습니다.

    List<Integer> numbers = new ArrayList<>(Arrays.asList(1, 2, 3, 4, 5));
    Collections.reverse(numbers);
    System.out.println(numbers); // [5, 4, 3, 2, 1]

     

    마무리

    지금까지는 컬렉션 프레임워크에서 가장 기본이 되는 인터페이스들과 메서드들에 대한 설명이었습니다.

    다음 글에서는 각 인터페이스를 구현한 클래스들과 그 사용법에 대해 알아보도록 하겠습니다.

    처음엔 많이 어렵다고 생각할 수 있으나, 차근차근 개념을 정리하며 자바 마스터가 되어봅시다.. ⭐️

Designed by Tistory.