Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Java 자료구조 비교 (Java1.6 기준)

1,773 views

Published on

Java.util의 하위 클래스인 Set, List, Map, Iterator, Enumeration의 특징 비교 (Java1.6 기준)

Published in: Software
  • Be the first to comment

Java 자료구조 비교 (Java1.6 기준)

  1. 1. 박혜웅
  2. 2. java.util.Collection java.util.Mapjava.util.Set java.util.List java.util.SortedSet java.util.SortedMap java.util.Iterator java.util.ListIterator java.util.Enumeration 인터페이스 주요 클래스 클래스 2
  3. 3. java.util.Collection java.util.Mapjava.util.Set java.util.List HashSet TreeSet EnumSet LinkedHashSet ArrayList LinkedList Vector Stack HashMap Hashtable TreeMap EnumMap LinkedHashMap WeakHashMap 인터페이스 주요 클래스 클래스 3
  4. 4. 인터페이스 중복 순서 구조 클래스 동기화 속도 정렬 NULL 허용 Set X X value HashSet X 빠름 X TreeSet X 느림 O EnumSet LiknedHashSet List O O index, value ArrayList X 매우빠름 X O LinkedList X 느림 Vector O 느림 Stack O 느림 Map X X key, value HashMap X 매우빠름 X O Hashtable O 느림 X X TreeMap X 매우느림 O EnumMap LinkedHashMap 매우빠름 WeakHashMap 4
  5. 5. 자료구조 클래스 메소드 공통 size(); list ArrayList LinkedList Vector set(v); get(i); stack LinkedList addLast(v); getLast(); removeLast(); queue LinkedList offer(v); pool(); peek(); hash table Hashtable HashMap put(k,v); get(k); set HashSet add(v); remove(v); 5
  6. 6. 6 설명 예제 선언 임의의 타입 E를 사용할 것을 선언. class Generic<E, F>{ void <E> add(E e){} } 사용 임의의 타입을 String으로 사용 Generic<String, Integer> list = new Generic<String>(); list.add(new String("")); 선언 Number나 그 하위 클래스 타입 E 를 사용할 것을 선언 class Generic2<E extends Number & Comparable>{ void <E> add(E e){} } 사용 Number나 그 하위 클래스 타입이 아닌 경우는 사용 불가. Generic2<Number> list = new Generic<Number>(); Generic2<Long> list = new Generic<Long>(); Generic2<String> list = new Generic<String>();  Generic Programming  매개변수의 데이터 타입을 지정  Generic 변수명 명명규칙  E=Element, K=Key, V=Value, O:Object, T=Type  타입의 범위 지정  <E extends Class, ... & extends Interface, ....>  특정 클래스나 인터페이스 하위의 타입만 사용
  7. 7.  Generic Wildcard  제너릭 타입에 대한 범위 지정 7 예제 설명 Vector<Integer> x= new Vector<String> (); 다른 타입이므로 타입변환 불가 Vector<Object> obj = new Vector<String>(); 부모클래스가 아니므로 타입변환불가 Vector<?> wild= new Vector<String>(); <?>는 <String> 의 부모타입 Vector<? extends Number> wild= new Vector<Long>(); <Long>은 <Number>의 하위 타입 Vector<? extends Number> wild= new Vector<Object>(); <Object>은 <Number>의 상위 타입 Vector<? super Number> wild= new Vector<Object>(); <Object>은 <Number>의 상위 타입 Vector<? super Number> wild= new Vector<Long>(); <Long>은 <Number>의 하위 타입 Vector raw = new Vector<String>; 암묵적 허용(?) 표시방법 설명 ? 모든 타입 ? extends 클래스 ? extends 인터페이스 특정 클래스(인터페이스) 하위의 모든 타입 (특정 클래스 포함) ? super 클래스 ? super 인터페이스 특정 클래스(인터페이스) 상위의 모든 타입 (특정 클래스 포함)
  8. 8. Generic<Object> Generic<String> Generic<?> Generic<String> Generic<? extends String> Generic<String> Generic Generic<String> Object String Generic<String> Generic<? super String >  Generic Wildcard  제너릭 타입의 상속 관계 8
  9. 9.  확장 for문 사용 예 9 ArrayList<Integer> list = new ArrayList<Integer>(); for(Integer i : list) { i.parseInt(); }

×