☕Java: 콜렉션 프레임워크와 제네릭

yoondgu·2022년 4월 18일
0

Java 

목록 보기
10/18

강의 수강 중 작성한 노트에서 내용을 발췌, 이응수 강사님 강의 의 노트와 이미지를 참조하고 있습니다.
스스로 이해를 위해 직접 쓴 문장들의 경우 정확성이 떨어질 수 있다는 점 참고 부탁드립니다.

Collection Framework


📌 Framework vs Library

  • 라이브러리가 자주 사용되는 로직을 재사용하기 편리하도록 잘 정리한 일련의 코드들의 집합이라면, 프레임워크는 개발 구현을 위한 특정 아이디어의 기초적인 뼈대이다.

📌 Collection Framework

  • 자바가 자료구조구현해놓은 것
    • 자료구조 : 객체의 저장/삭제/조회 등의 기능을 제공하는 것
      • 컴퓨터과학에서 효율적인 접근 및 수정을 가능케하는 자료의 조직, 관리, 저장
      • 데이터 값의 모임, 데이터 간의 관계, 데이터에 적용할 수 있는 함수나 명령
      • 각자의 연산 및 목적에 맞게 여러 종류가 있다. (배열, 튜플, 연결리스트, 해시테이블, 스택, 큐, 그래프, 트리)
  • 데이터를 저장하는 자료 구조와 데이터를 처리하는 알고리즘을 구조화하여 클래스로 구현해 놓은 것으로, 인터페이스를 사용하여 구현된다.
  • 자바에서는 Collection<E> 인터페이스 를 이용해서 다양한 자료구조의 기능을 추상화하고, 각각의 자료구조에 대한 다양한 구현 클래스를 제공한다.
  • Collection<E> 인터페이스 구현객체의 반환값을 반환하는 메소드는 절대로 반환값이 null 일 수 없다.

📌 자바의 자료구조 특징

  • 객체만 저장할 수 있다. (기본자료형은 저장할 수 없다.)
  • 크기가 가변적이다. (↔ 배열의 한계 극복)
  • 다양한 메소드를 지원한다. (↔ 배열의 한계 극복)
    배열콜렉션
    기본자료형, 객체객체 (기본자료형은 Wrapper 객체로 대체)
    크기불변가변
    메소드없음저장/삭제/조회/검색 기능을 제공하는 메소드가 있음
    생성 표현식자료형[] 참조변수명 = new 자료형[크기];콜렉션 <자료형> 참조변수명 = new 콜렉션<>();

📌 제네릭 클래스로 콜렉션 생성하기

  • 제네릭 Generic
    • 제네릭 클래스, 제네릭 인터페이스는 객체명 <E> { } 와 같이 정의한다.
    • E클래스<E>타입파라미터이다. 어떤 글자든 상관 없고, 여러 개 정의할 수 있다.
    • 타입파라미터는 저장된 객체가 저장하는 자료의 타입, 메소드의 반환타입, 매개변수 등을 정의한다.
    • 주로 자료구조와 관련하여 사용된다.
      package util.generic;
      
      /*
       * Box<E> 클래스는 제네릭 클래스이다.
       * Box<E> 클래스의 E는 타입파라미터이다.
       * 객체 생성시점에 E의 타입을 지정할 수 있다.
       * 객체 생성시점에 E의 타입을 지정하지 않으면 Object 타입으로 간주한다.
       */
      public class Box<E> {
      	private Object[] items = new Object[10];
      	
      	public void addItem(int index, E e) {
      		items[index] = e;
      	}
      	
      	@SuppressWarnings("unchecked")
      	public E getItem(int index) {
      		return (E) items[index];
      	}
      }
  • 소스레벨에서 저장할 자료들의 자료형을 미리 결정하지 않고, 별칭만 지정한다.
    타입파라미터가 바로 그 별칭이다.
  • 별칭을 대신할 자료형은 객체 생성시점, 구현시점, 메소드실행시점에 지정한다.
    소스코드에서 타입파라미터로 적혀있던 곳들에 지정한 자료형이 대입된다.
    • 객체 생성시점에도 E의 타입을 지정하지 않으면, 소스코드에서 E로 표시된 곳이 전부 소스코드에서 지정해둔 타입으로 간주된다. (위 예시 참고)


Collection Framework 의 구조


📌 Collection Framework의 주요 인터페이스

💡 이 중 Set, List는 Collection 인터페이스를 상속하는 주요 하위 인터페이스이다.
Collection 인터페이스에서 List, Set의 공통된 부분을 정의하고 있다.
그러나 Map 인터페이스는 Collection 인터페이스를 상속하지 않고 별도로 정의된다.



이미지 출처: https://breakcoding.tistory.com/113

📌 Collection 인터페이스

  • 모든 자료구조 구현클래스가 반드시 구현해야할 기능을 추상화한 인터페이스
  • 저장, 조회, 삭제, 검색과 관련된 기능이 추상화되어 있다.

0개의 댓글