제네릭 & 컬렉션
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, 순차적 접근 시 용이