인터페이스 관련 자료구조

Algorithm/자료구조와 알고리즘 2019. 5. 19. 11:39
728x90
반응형

-자바 interface-

 

자바 interface는 메서드 집합을 의미.

이 interface를 구현하는 클래스는 이러한 메서드를 제공해야 합니다.

예를 들어,  java.lang 패키지에 정의된 Comparable interface 의 소스코드는 다음과 같다.

 

 

  public interface Comparable<T>{

  public int compareTo(T o);

  }

 

 

이러한 interface는 타입 파라미터인 T를 사용하여 Comparable라는 제네릭 타입을 정의합니다.

interface를 구현하려면 클래스는 T 타입을 명시해야 하고, T 타입의 객체를 인자로 받고 int를 반환하는 compareTo() 메서드를 제공해야 합니다.

 

예를 들어,  java.lang.Integer 클래스의 소스 코드는 다음과 같습니다.

 

 

  public final class Integer extends Number implements Comparable<Integer>    {

  public int compareTo(Integer antherInteger) {

  int thisVal = this.value;

  int anogherVal = anotherInteger.value;

  return (thisVal<anotherVal ? -1 : (thisVal == anotherVal ? 0 : 1 ));

  }

  //다른 메서드 생략함

  }

 

 

 

 

-제네릭-

 

자바에서 제네릭(Generic)이란 데이터의 타입(Data Type)을 일반화한다(Generalize)는 것을 의미한다.

제네릭은 클래스나 메소드에서 사용할 내부 데이터 타입을 컴파일 시에 미리 지정하는 방법이다.

이렇게 컴파일 시에 미리 타입 검사(Type Check)를 수행하면 다음과 같은 장점을 가진다.

1. 클래스나 메소드 내부에서 사용되는 객체의 타입 안정성을 높일 수 있다.

2. 반환값에 대한 타입 변환 및 타입 검사에 들어가는 노력을 줄일 수 있다.

JDK 1.5 이전에서는 여러 타입을 사용하는 대부분의 클래스나 메소드에서 인수나 반환값으로 Object 타입을 사용했다.

하지만 이 경우에는 반환된 Object 객체를 다시 원하는 타입으로 타입 변환해야 하며, 이때 오류가 발생할 가능성도 존재한다.

JDK 1.5부터 도입된 제네릭을 사용하면 컴파일 시에 미리 타입이 정해지므로, 타입 검사나 타입 변환과 같은 번거로운 작업을 생략할 수 있다.

 

 

 

-List interface-

 

JCF는 List라는 interface를 정의하고 ArrayList와 LinkedList라는 두 구현 클래스를 제공합니다.

interface는 List가 된다는 의미가 무엇인지를 정의합니다.

이 interface를 구현하는 클래스는 add, get, remove와 약 20가지 메서드를 포함한 특정 메서드 집합을 제공해야 합니다.

 

ArrayList와 LinkedList 클래스는 이러한 메서드를 제공하므로 상호교환할 수 있습니다.

List로 동작하는 메서드는 ArrayList와 LinkedList 또는 List를 구현하는 어떤 객체와도 잘 동작합니다.

 

다음은 이러한 내용을 보여주는 예제 코드이다. (파일명 : ListClientExample.java).

 

 

  public class ListClientExample {

  private List list;

 

  public ListClientExample() {

  list = new LinkedList( );

  }

 

  private List getList() {

  return list;

  }

 

  public static void main(String[ ] args) {

        ListClientExample Ice = new ListClientExample( );

        List list = Ice.getList( );

        System.out.println(list);

  }

 

 

 

 

-Java Collction Framework (JCF)-

 

Java 에서 데이터를 저장하는 기본적인 자료구조들을 한 곳에 모아 관리하고 편하게 사용하기 위해서 제공하는 것을 의미한다.

다음은 JCF 의 상속 구조이며 사용 용도에 따라 List, Set, Map 3가지로 요약할 수 있다.

 

 

 

1. Map

 

키 (Key) 값과 밸류 (Value) 값을 받아 저장하는 함수이다.

 

 

  map<Key,Value>변수 = new HashMap<>( );

 

 

 

 

2. Set

 

String 값으로 저장하는 함수이고, 순서가 없는게 특징이다.

 

 

-예제 및 출력결과-

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
package ch01;
 
import java.awt.List;
import java.util.ArrayList;
import java.util.LinkedList;
 
 
public class ListClientExample {
    
    //list 인스턴스 변수를 선언
    private List list;
    
    public ListClientExample() {
        list = new List();
    }
    
    public List getList() {
        return list;
    }
    
    public static void main(String[] args) {
        ListClientExample Ice = new ListClientExample();
        List list = Ice.getList();
        System.out.println(list);
 
    }
 
}
 
cs

 

 

---작성중---

728x90
반응형

'Algorithm > 자료구조와 알고리즘' 카테고리의 다른 글

알고리즘 공부순서  (0) 2019.11.04
빅 오 (Big - O) 표기법  (0) 2019.06.16
알고리즘 분석  (0) 2019.06.14
: