개발/JAVA

제네릭 & 컬렉션

DeP 2016. 11. 16. 13:15

1. 제네릭<T> : <T:type>을 이용하여 데이터 형에 관계없이 지역변수, 메소드를 사용할 수 있게 함

 

ex)

class Class_name<T, D>

{

private T var_name;

 

public T met_name(D tmp){

//...

}

}

 

cf. 상속관계인 객체들을 다룰 때 다형성을 이용하여 최상위 클래스 객체를 T로 설정하면 용이하다.

 

 

 

2. 프레임워크 : 잘 정의된 약속된 구조나 골격

 

 

3. 컬렉션 : 데이터의 저장, 그리고 이와 관련있는 알고리즘을 구조화 해 놓은 프레임워크

(컬렉션은 데이터의 저장, 그리고 이와 관련있는 알고리즘을 구조화 해 놓은 프레임워크, 쉽게는 자료구조와 알고리즘을 클래스로 구현해  놓은)

 

-Collection<E>    ->    Set<E>

 ->    List<E>

 ->    Queue<E>

 

-Map<K, V>

 

----------------------------------------------------------------

 

*Set : 집합의 속성

 

-HashSet(해시이용, 검색속도 빠름)

1) 중복 값 저장 불가

2) hashCode(), equals(Object obj) 오버라이딩    cf. Object의 hashCode()메소드는 객체마다 모두 상이한 값 리턴

3) 방식 : hashCode()의 리턴 값이 같은 것(해시 값) 묶음에서 -> equals()가 true인 것 있는지 검색

 

-TreeSet

1) 자동 정렬

2) TreeSet<E> : E는 Comparable<T> 인터페이스를 구현한 클래스-객체여야 함 / E : Comparable::compareTo() 오버라이딩 (정렬 시 앞(a-b : 음수), 뒤(양수), 같음(0))

3) TreeSet<E> : E가 기본 자료형일 경우 생성자와 Comparator<E> 인터페이스를 이용

ex)

class ClassName implements Comparator<String>{

public int compare(String str1, String str2){    //Comparator<E>의 compare()구현

if(condition1) return ...

else if(condition2) return...

else return...

}

}

TreeSet<String> strTreeSet = new TreeSet<>(new ClassName());

 

 

----------------------------------------------------------------

 

-Set : 저장 순서가 존재

-List : 저장 순서 X, 순차적 접근 시 용이