본문 바로가기
WEB/Java

List 인터페이스

by 노랑파랑 2016. 12. 14.
반응형




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