본문 바로가기
Java/Data Structures

2. List Interface?

by lchit 2021. 3. 16.

리스트는 왜 나뉘어져있을까?

JCF (Java Collection Framework)를 사용하다보면 종종 ArrayList와 LinkedList로 List에 주입하는데

왜 두가지 구현을 제공할까? 어떤 동작은 ArrayList가 빠르고 어떤 상황에서는 LinkedList가 더 효율적이다.

 

List와 같이 Interface는 메서드의 집합을 의미한다 아래 코드를 보자.

public class ExampleList {
	
	private List list;
	
	private ExampleList() {
		list = new LinkedList();
	}
	
	private List getList() {
		return list;
	}
	
	public static void main(String[] args) {
		ExampleList ice = new ExampleList();
		List list = ice.getList();
		System.out.println(list);
	}
}

 

ExampleList는 유용한 동작을 하진 않지만 List를 캡슐화하는 클래스의 필수요소를 가진다.

즉 List(Interface)형의 필드를 가진다.

 

생성자를 통해 LinkedList() 를 할당하지만 필요하다면 생성자만 바꿔 ArrayList를 할당할 수 도 있다.

이러한 스타일을 인터페이스 기반 프로그래밍이라하며 다형성을 가진다.

 

나중에 구현이 바뀌어도 인터페이스를 사용하는 코드는 그대로 유지가 가능하다.

특정구현에 의존하지말고 인터페이스만을 바라보는 설계를 하는게 중요하다.

 

'Java > Data Structures' 카테고리의 다른 글

4. 선택정렬  (0) 2021.03.16
3. 알고리즘 분석  (0) 2021.03.16
1. 자료구조 왜?  (0) 2021.03.16