자바가 자료구조
를 구현해놓은 것
자료구조
: 객체의 저장/삭제/조회 등의 기능을 제공하는 것
컴퓨터과학에서 효율적인 접근 및 수정을 가능케하는 자료의 조직, 관리, 저장
데이터 값의 모임, 데이터 간의 관계, 데이터에 적용할 수 있는 함수나 명령
각자의 연산 및 목적에 맞게 여러 종류가 있다.
(배열, 튜플, 연결리스트, 해시테이블, 스택, 큐, 그래프, 트리)
데이터를 저장하는 자료 구조와 데이터를 처리하는 알고리즘을 구조화하여 클래스로 구현해 놓은 것으로, 인터페이스를 사용하여 구현된다.
자바에서는 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];
}
}
소스레벨에서 저장할 자료들의 자료형
을 미리 결정하지 않고, 별칭
만 지정한다.
타입파라미터
가 바로 그 별칭이다.
별칭을 대신할 자료형은 객체 생성시점, 구현시점, 메소드실행시점에 지정한다.
소스코드에서 타입파라미터
로 적혀있던 곳들에 지정한 자료형
이 대입된다.