List 인터페이스
▷ 배열과 가장 형태가 비슷한(순서가 있다는 점, 중복 허용) Collection
▷ 중복된 데이터를 허용하고 입력 순서대로(FIFO) 멤버 객체를 처리할 수 있다.
▷ 구현 클래스들은 보통 순차 처리를 하고 대량의 데이터를 처리할 때 많이 사용된다.
▷ 다른 Collection들 보다 속도가 빠르다.
▷ Collection관련 클래스의 객체를 선언할 때는 제네릭을 사용하는 것을 권장. 한 클래스에 한가지 타입의 객체를 저장하여 컴파일 시 타입을 잘못 지정한 부분을 걸러낼 수 있다.
인터페이스 구현 클래스
▷ ArrayList
* 배열 기반으로 처리한다.
* 멤버 객체의 순차적인 삽입, 삭제 시 가장 속도가 빠르다.
* 배열을 사용하여 멤버 객체들을 처리하여 리스트 중간의 삽입, 삭제 시에는 유용하지 못하다.
* 인덱스를 이용하기 때문에 특정 위치의 멤버 변수를 가져올 때 적절하다.
* Collection이 저장 할 수 있는 멤버 객체의 개수를 변경할 수 있으며, Vector와 거의 모든 부분이 동일하나 동기화를 지원하지 않는다.
▶제공 메소드
* 삽입
* 검색
* 삭제
▷ Vector
* ArrayList와 함께 가장 많이 사용된다.
* ArrayList와 비슨한 기능을 제공하며, 동기화를 지원한다.
▷ LinkedList
* 자료구조의 LinkedList(연결 리스트)를 구현한 클래스.
* 멤버 객체는 각 자신의 객체 앞, 뒤의 객체에 관한 정보를 가지고 있으며, 이것을 '링크'라고 한다.
* 이러한 링크 기반으로 멤버 객체를 관리하여 데이터의 삽입, 삭제가 빠르지만 특정 위치의 객체를 찾기에 적절하지 못하다.
▷ Stack
* 자료구조의 Stack(스택 : LIFO-Last In First Out)를 구현한 클래스
* 데이터의 삽입(Pop), 삭제(Push)가 리스트의 끝에서만 처리되며, 이를 메소드 형태로 제공한다.
▶ 제공 메소드
List 인터페이스 메소드
List<> list = new ArrayList<>(); VS ArrayList<> list = new ArrayList<>();
자바를 사용하면서 여러 코드를 보면 위와 같이 인터페이스를 사용하거나, 구현 클래스를 사용하여 인터페이스를 선언하는 경우를 보게된다.
단순 루틴에서는 구현 클래스를 사용하는 것이 많지만 복잡한 루틴이 되었을 때 어떤 형타입을 사용할지 모를 경우에(예를 들어 List를 구현하는데 ArrayList를 사용할지 Vector를 사용할지 모를 경우) 인터페이스를 사용하는 경우가 많다.
구현 클래스를 사용하면 형타입을 알 수 있어 더 편리하게 사용할 수 있고, 인터페이스를 사용하게 되면 더 많은 형타입을 받아들일 수 있게 되며 자유롭게 교체가 가능하다.
참고 : 자바를 다루는 기술, 자바의 신
'WEB > Java' 카테고리의 다른 글
제네릭 (0) | 2017.01.03 |
---|---|
오버라이딩(Overriding), 오버로딩(Overloading) (0) | 2017.01.03 |
Map 인터페이스 (0) | 2016.12.14 |
Collection 인터페이스 (0) | 2016.12.14 |
Enumeration<E> 인터페이스 (0) | 2016.12.01 |