인터페이스 사용
1.인터페이스
- final 상수와 추상 메소드 만을 가진 개체
- 최근에는 default method(구현된 메소드)를 소유 가능
- 다른 클래스에 implements 해서 사용, 다른 인터페이스에 extends 가능
2.사용 목적
- 다형성 구현을 위해서
- 템플릿 메소드 패턴을 구현하기 위해서
- 인터페이스에 메소드의 모형을 만들고 클래스서 구현하는 방식
- 클래스가 인터페이스를 implements 했다면 클래스에는 인터페이스의 메소드가 구현되어 있다는 보장을 할 수 있습니다.
- 추상메소드는 상속받은 곳에서 반드시 재정의 해야 합니다.
- 인터페이스를 다른 말로 부를 때 protocol 이라고도 합니다.
자료구조(Data Structure)
- 0개 이상의 데이터를 저장하는 방법
- 예전에는 각 자료구조의 특징을 숙지하고 직접 구현을 해서 사용했는데 최근에는 프로그래밍언어에서 자료구조를 미리 구현해놓고 이 자료구조를 가져다 사용하는 경우가 많습니다.
- 제공되는 자료구조는 프로그래밍언어마다 다르고 부르는 이름도 다릅니다.
- 알고리즘을 잘 설계하더라도 자료구조를 잘못 선택하면 속도 향상은 한계가 있습니다.
- 자바의 경우는 자료구조 관련 클래스들을 java.util 패키지에서 제공합니다.
java.util 의 자료구조 관련 인터페이스와 클래스
1.Arrays 클래스
- 배열 관련된 작업을 위한 클래스
배열의 특징(Array)
- 배열은 한 번 생성되면 크기 변경이 안됩니다.
- 배열은 데이터를 연속적으로 빈 공간 없이 배치해야 합니다.
- 배열은 공간낭비가 없습니다.
연속적으로 배치할 수 있는 빈 공간이 없으면 생성이 불가능
- 데이터를 삽입하거나 삭제하고자 할 때는 복사해서 작업을 수행해야 합니다.
- 크기 변경이 안되기 때문에 삽입할려면 새로운 공간을 할당받아서 삽입해야 하고 연속적으로 배치되어야 하기 때문에 삭제를 할려면 삭제된 이후의 데이터를 앞으로 당겨야 하는 문제가 발생하기 때문입니다.
2.Collection 인터페이스
- 데이터의 모임과 관련된 인터페이스
- List 와 Set 인터페이스에게 상속
- Collection 들에 공통으로 구현해야 할 메소드를 선언
3.List 인터페이스
- 데이터를 물리적 또는 논리적인 순서대로 연속해서 저장하는 자료구조 인터페이스
- ArrayList, LinkedList, Stack, Queue, Deque 등에서 구현하거나 상속
4.Set 인터페이스
- 데이터를 중복없이 해싱을 이용해서 저장하는 자료구조 인터페이스
- HashSet, LinkedHashSet, TreeSet 클래스에서 구현
5.Map 인터페이스
- Key 와 Value를 쌍으로 저장하는 자료구조 인터페이스
- Table 또는 Dictionary 라고도 합니다.
- HashMap, LinkedHashMap, TreeMap 클래스에서 구현
6.Property 클래스
- Key 와 Value를 쌍으로 저장하는데 자료형이 String 만 가능한 클래스
- 설정이나 메시지 저장에 많이 사용된 클래스
7.Iterator & Enumeration
- 데이터를 순서대로 하나씩 접근할 수 있도록 해주는 포인터 : Cursor 라고도 합니다.
- 자바에서는 Enumeration이 먼저 나왔고 후에 비슷한 기능을 개량한 Iterator가 추가되었습니다.
- 우리말로 번역할 때는 반복자 또는 열거자로 번역
- 인터페이스가 구현된 컬렉션의 데이터는 for(임시변수 : 컬렉션){ } 구문을 이용해서 컬렉션의 모든 데이터를 임시변수에 하나씩 대입해서 { }안에서 사용할 수 있습니다.
- Iterator 의 메소드: hasNext() 와 next()
- Enumeration 의 메소드: hasMoreElements() 와 nextElement()