2017년 3월 6일 월요일
[Java] Collection Framework
1)List <E>
-method
add(instance)
get(index)
remove(index)
ensureCapacity(500) //리스트의 크기를 정해준다
size()
-ArrayList<E>
자동으로 인덱스에 따라 배열의 크기를 늘려주지만, 추가/삭제 연산 시간이 많이 소요된다.
-LinkedList<E>
추가/삭제 연산이 간단하지만 데이터 참조가 다소 불편하다.
2)Iterator<E> 를 이용한 순차적 접근
Collection<E>인터페이스에는 Iterator<E> iterator() 메소드가 정의되어있다.
여기에 정의되어 있는 메소드는
boolean hasNext() //참조할 다음 번 요소가 존재하면 true
E next() //다음 요소를 반환
void remove() //현재 위치의 요소를 삭제
List<E>에 정의된 메소드를 통해 각 요소에 접근할 수 있지만 Iterator의 장점은
컬렉션 클래스의 종류에 상관없이 동일한 형태의 데이터 참조방식을 유지하는 것이다.
즉 ArrayList<E> 나 HashSet<E> 상관없이 접근이 가능하다.
3)Set <E>
-저장 순서를 유지하지 않는다
-데이터의 중복저장을 허용하지 않는다
-HashSet<E>
-LinkedHashSet<E> : 저장순서를 유지한다.
-해쉬 알고리즘에 따라 적절히 몇 몇 메소드들을 오버라이딩할 필요가 있다.
public int hashCode()
public boolean equals(Object oj)
EX)
https://github.com/ehdrn3020/Java/blob/master/Collection_Framwork/hashSet_example.java
-TreeSet<E>
데이터를 정렬된 상태로 저장하는 자료구조 구현. 정렬의 기준을 프로그래머 직접 구현.
-인스턴스의 비교 기준을 정하는 Compareable <T> 인터페이스
interface Comparable<T>
{
int compareTo(T obj){
비교할 내용; 크면 return 1, 작으면 return -1, 같으면 return 0;
}
}
-두개의 오프젝을 받아 정렬하는 Comparator<T> 인터페이스
interface Comparator<T>
{
int compare(T o1, T o2){
비교할 내용;
}
}
4)Map <k, v>
-HashMap <k,v>
-TreeMap <k,v>
예제 https://github.com/ehdrn3020/Java/tree/master/Collection_Framwork
피드 구독하기:
댓글 (Atom)
댓글 없음:
댓글 쓰기