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


댓글 없음:

댓글 쓰기