☕Java: 콜렉션 프레임워크와 제네릭
강의 수강 중 작성한 노트에서 내용을 발췌, 이응수 강사님 강의 의 노트와 이미지를 참조하고 있습니다.
스스로 이해를 위해 직접 쓴 문장들의 경우 정확성이 떨어질 수 있다는 점 참고 부탁드립니다.
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 인터페이스를 상속하지 않고 별도로 정의된다.
자료구조
를 구현해놓은 것
자료구조
: 객체의 저장/삭제/조회 등의 기능을 제공하는 것- 컴퓨터과학에서 효율적인 접근 및 수정을 가능케하는 자료의 조직, 관리, 저장
- 데이터 값의 모임, 데이터 간의 관계, 데이터에 적용할 수 있는 함수나 명령
- 각자의 연산 및 목적에 맞게 여러 종류가 있다. (배열, 튜플, 연결리스트, 해시테이블, 스택, 큐, 그래프, 트리)
Collection<E> 인터페이스
를 이용해서 다양한 자료구조의 기능을 추상화하고, 각각의 자료구조에 대한 다양한 구현 클래스를 제공한다.Collection<E> 인터페이스 구현객체의
반환값을 반환하는 메소드는 절대로 반환값이 null 일 수 없다.배열 | 콜렉션 | |
---|---|---|
값 | 기본자료형, 객체 | 객체 (기본자료형은 Wrapper 객체로 대체) |
크기 | 불변 | 가변 |
메소드 | 없음 | 저장/삭제/조회/검색 기능을 제공하는 메소드가 있음 |
생성 표현식 | 자료형[] 참조변수명 = new 자료형[크기]; | 콜렉션 <자료형> 참조변수명 = new 콜렉션<>(); |
- 제네릭 클래스, 제네릭 인터페이스는
객체명 <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의 주요 인터페이스
💡 이 중 Set, List는 Collection 인터페이스를 상속하는 주요 하위 인터페이스이다.
Collection 인터페이스에서 List, Set의 공통된 부분을 정의하고 있다.
그러나 Map 인터페이스는 Collection 인터페이스를 상속하지 않고 별도로 정의된다.
이미지 출처: https://breakcoding.tistory.com/113
📌 Collection 인터페이스
- 모든 자료구조 구현클래스가 반드시 구현해야할 기능을 추상화한 인터페이스
- 저장, 조회, 삭제, 검색과 관련된 기능이 추상화되어 있다.
Author And Source
이 문제에 관하여(☕Java: 콜렉션 프레임워크와 제네릭), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@yoondgu/Java-콜렉션-프레임워크와-제네릭저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)