자바 용기 류 지식 점 상세 요약

8623 단어 자바용기.종류
1.자바 용기 분류 도


2.용기 류 인터페이스 와 추상 용기 류
설명
용기 인 터 페 이 스 는 용기 의 기초 이다.인 터 페 이 스 를 사용 하면 용기 의 실현 과 용기 인 터 페 이 스 를 분리 할 수 있 기 때문에 용기 의 구체 적 인 데이터 구조 에 관심 을 갖 지 않 고 같은 방법 으로 용기 에 접근 할 수 있다.
마찬가지 로 Iterator 인터페이스 도 사용자 로 하여 금 같은 방법 으로 서로 다른 용기 류 에 접근 할 수 있 게 한다.
2.2 용기 인터페이스(컬 렉 션,지도,Iterator)
1)collection 인터페이스

boolean add(Object obj):     ,         true
Iterator iterator():  Iterator     
int size()
boolean isEmpty()
boolean contains(Object obj)
void clear()
<T> T[] toArray(T[] a)
2)맵 인터페이스(키 값 을 저장 하고 맵 의 값 도 용기 일 수 있 습 니 다)

Object get(Object key)
Object put(Object key, Object value)
Set keySet() : returns the keys set Set<K> keySet()
Set entrySet(): returns mappings set Set<Map.Entry<K,V>> entrySet()
containsKey()
containsValue() 
3)Iterator 인터페이스

Object next()
boolean hasNext()
void remove()
메모:remove 함 수 는 여러 번 연속 으로 실행 할 수 없습니다.그렇지 않 으 면 IllegalStateException 으로 돌아 갑 니 다.
( if the next method has not yet been called, or the remove method has already been called after the last call to the next method.)
일반 용법:

Iterator it=collection.iterator();
    while(it.hasNext())
    {
     Object obj=it.next();
    //do something 
    }
2.3 하위 인터페이스(목록,설정,ListIterator,SortedMap,SortedSet)
1)List(순서 가 중복 되 고 순서 가 있 기 때문에 조작 할 때 방법 에 색인 파 라 메 터 를 추가 할 수 있 습 니 다.다음 과 같 습 니 다.)

boolean add(E element)
void add(int index, E element) 
E set(int index, E element)
E get(int index);
2)Set(순서 없 이 반복 할 수 없고 순서 가 없 기 때문에 색인 작업 대상 을 통과 할 수 없습니다)
3)ListIterator(Iterator for List,List 는 양 방향 표 이기 때문에 Iterator 에 새로운 방법 을 추가 하여 traverse the List in either direction 을 허용 합 니 다)

boolean hasPrevious();
E previous();
int previousIndex()
4) SortedMap
설명:키 의 오름차 순 으로 배 열 된 맵 을 확보 하고 키 의 자연 순서(Comparable 인터페이스)에 따라 정렬 하거나 질서 있 는 맵 을 만 들 때 제공 하 는 비교 기 를 통 해 정렬 할 수 있 습 니 다.
(A Map that further provides a total ordering on its keys. The map is ordered according to the natural ordering of its keys, or by a Comparator typically provided at sorted map creation time)

public interface SortedMap<K,V>extends Map<K,V>
Comparator comparator()
Object firstKey()
Object lastKey()
5)SortedSet 
주로 정렬 작업 에 사용 되 며,이 인 터 페 이 스 를 실현 하 는 하위 클래스 는 모두 정렬 된 하위 클래스 입 니 다.

public interface SortedSet<E>extends Set<E>
  * Comparator comparator()
  * E first() :       
  * E last() 
* SortedSet<E> headSet(E toElement):   less than toElement
  * SortedSet<E> tailSet(E fromElement)
  * SortedSet<E> subSet(E fromElement) 
2.4 추상 용기 류
1)설명:추상 적 인 용기 류 를 사용 하면 편리 하 게 클래스 를 정의 할 수 있 으 며,각 클래스 에서 용기 인터페이스 container 의 모든 방법 을 실현 하지 않 아 도 된다.
2)포함:

* AbstractCollection     public abstract class AbstractCollection<E>extends Objectimplements Collection<E>
  * AbstractList public abstract class AbstractList<E>extends AbstractCollection<E>implements List<E>
  * AbstractSet        public abstract class AbstractSet<E>extends AbstractCollection<E>implements Set<E>
  * AbstactMap public abstract class AbstractMap<K,V>extends Object implements Map<K,V>
  * AbstractSequentialList public abstract class AbstractSequentialList<E> extends AbstractList<E>
3.구체 적 인 용기 류
3.1 요약
1)collection: ArrayList,LinkedLsit,Vector,Stack
TreeSet,HashSet,LinkedHashSet
2)지도:HashMap,LinkedHashMap,WeakHashMap,TreeMap,HashTable,Identity HashTable(그 중에서 key 의 비 교 는 equals 가 아 닌==을 통 해)
3.2 상용 용기 류
1)ArrayList 와 LinkedList(모두 동기 화 되 지 않 고 다 중 스 레 드 시 스 레 드 안전 문 제 를 고려 해 야 합 니 다),Vector(동기 화),Stack
1.List 인 터 페 이 스 는 색인 을 통 해 요소 에 접근 하 는 것 을 지원 합 니 다.Array List 는 무 작위 로 접근 하 는 속도 가 느 려 집 니 다.LinkedList 가 빠 르 고 랜 덤 접근 이 느 립 니 다.Vector 는 동기 화 를 실현 하여 Array List 보다 느 립 니 다.
2.LinkedList 는 양 방향 링크 를 사용 하여 LinkedList 에 추가 get,remove,insert 방법 을 제공 합 니 다.LinkedList 의 첫 부분 이나 끝 부분 에 있 습 니 다.이 동작 들 은 LinkedList 를 스 택(stack),대기 열(queue)또는 양 방향 대기 열(deque)로 사용 할 수 있 습 니 다.
3.ArrayList 는 성장 알고리즘 을 정의 하지 않 았 습 니 다.대량의 요 소 를 삽입 해 야 할 때 ensureCapacity 방법 으로 추가 효율 을 높 일 수 있 습 니 다.
4.Vector 는 Array List 와 유사 하지만 동기 화 되 어 있 으 며 다 중 스 레 드 안전(또 다른 차이 점 은 Array List 확장 시 기본 값 이 절반 증가 하고 Vector 가 배로 증가 하 는 것)입 니 다.단일 스 레 드 든 다 중 스 레 드 든 Vector 는 Array List 보다 느 립 니 다.
5.Stack 은 Vector 에서 계승 하여 후진 선 출 스 택 을 실현 합 니 다.
6.동기 화가 필요 하 다 면 Collections 도구 류 의 synchronizedList 방법 을 호출 할 수 있 습 니 다.다음 과 같 습 니 다.

List list = Collections.synchronizedList(new ArrayList());
synchronized(list) {
Iterator i = list.iterator(); // Must be in synchronized block
while (i.hasNext())
foo(i.next());
}
  :
List list = Collections.synchronizedList(new LinkedList());
7.정 의 는 다음 과 같다.(LinkedList 가 Deque 를 실 현 했 음 을 주의 하 라)

public class ArrayList<E>extends AbstractList<E>implements List<E>, RandomAccess, Cloneable, Serializable
public class LinkedList<E>extends AbstractSequentialList<E>implements List<E>, Deque<E>, Cloneable, Serializable
public class Vector<E>extends AbstractList<E>implements List<E>, RandomAccess, Cloneable, Serializable
  
2)TreeSet,HashSet,LinkedHashSet(HashSet,TreeSet 은 라인 이 안전 하지 않 음)
1.TreeSet 은 SortedSet 인터페이스의 유일한 실현 유형 으로 TreeSet 은 집합 요소 가 정렬 상태 에 있 고 효율 이 높 으 며 프로그램의 효율 을 높 일 수 있 습 니 다.TreeSet 은 compare To 나 compare 를 통 해 정렬 되 기 때문에 값 이 같 으 면 equals 가 다 르 더 라 도 집합 에 추가 할 수 없습니다(fails to obey Set interface)
2.HashSet 은 효율 이 높 고 TreeSet 과 달리 비교 대상 의 equals 를 통 해 서로 다른 대상 을 구분 합 니 다.그러면 서로 다른 대상 은 중복 되 지 않 고 집합 에 가입 할 수 있 습 니 다.
hashCode()함수 가 확실 하지 않 습 니 다.대상 의 기본 hashCode 함수 시험 대상 의 메모리 주소 값 입 니 다.hashCode 함수 의 좋 고 나 쁨 은 HashSet 성능 의 관건 입 니 다.
3.LinkedHashSet 은 HashSet 과 마찬가지 로 요소 의 hashCode 값 에 따라 요소 의 저장 위 치 를 결정 하지만 링크 를 사용 하여 요소 의 순 서 를 유지 합 니 다.링크 드 HashSet 은 set 의 모든 요 소 를 교체 방문 할 때 HashSet 보다 성능 이 좋 지만 삽입 할 때 HashSet 보다 성능 이 약간 떨어진다.
4.Set 는 null 을 삽입 할 수 있 습 니 다.최대 null 을 삽입 할 수 있 습 니 다.
3)HashMap(비 동기 화),HashTable(스 레 드 안전),TreeMap,WeakHashMap
1.HashTable 과 HashMap 의 차이 점:(자세 한 내용 은 HashTable 과 HashMap 을 보십시오)
  •  Hashtable 은 Dictionary 류 에서 물 려 받 았 고 HashMap 은 AbstractMap 류 에서 물 려 받 았 다.하지만 둘 다 맵 인 터 페 이 스 를 실현 했다.
  • Hashtable 의 방법 은 Synchronize 이 고 HashMap 의 방법 은 결 성 된 상황 에서 비 Synchronize 의
  • 입 니 다.
  • Hashtable 에서 key 와 value 는 null 값 이 나타 나 는 것 을 허용 하지 않 습 니 다.HashMap 에서 null 은 키 로 사용 할 수 있 습 니 다.이 키 는 하나 밖 에 없습니다.하나 이상 의 키 에 대응 하 는 값 은 null
  • 입 니 다.
  • HashTable 은 대상 의 hashCode 를 직접 사용 합 니 다.해시 맵 은 해시 값 을 다시 계산 합 니 다.
  • 2.Weak HashMap 은 개 선 된 HashMap 으로 key 에 대해'약 한 인용'을 실행 합 니 다.Weak HashMap 은 키 가 아 닌 요소 의 인용 을 사용 합 니 다.즉,같은(a==b)을 인용 해 야 관련 값 을 찾 을 수 있 습 니 다.또한 키 가 외부 에서 인용 되 지 않 으 면 이 키 는 GC 에서 회수 할 수 있 습 니 다.
    3.TreeMap 은 SortedMap 인터페이스의 붉 은 검 은 나무 기반 구현 입 니 다.이 는 맵 이 오름차 순 으로 키 워드 를 배열 하고 사용 하 는 구조 방법 에 따라 키 의 자 연 스 러 운 순서 로 정렬 할 수 있 음 을 보증 합 니 다.
    4.정 의 는 다음 과 같다.
    
    public class Hashtable extends Dictionary implements Map, Cloneable, Serializable 
    public class HashMap extends AbstractMap implements Map, Cloneable, Serializable 
    public class TreeMap<K,V>extends AbstractMap<K,V>implements NavigableMap<K,V>, Cloneable, Serializable
    4.용기 류 사용 보충
    1)추상 프로 그래 밍 사상 을 사용 하여 생 성 할 때 부모 클래스 참조 로 하위 클래스 대상 을 가리 키 고 되 돌아 갈 때 추상 인터페이스 로 돌아 갑 니 다.
    2)스 택,대기 열 등 작업 과 관련 된 경우 List 를 사용 하 는 것 을 고려 해 야 합 니 다.요 소 를 빠르게 삽입 하고 삭제 해 야 할 경우 LinkedList 를 사용 해 야 합 니 다.요 소 를 빠르게 무 작위 로 접근 하려 면 ArrayList 를 사용 해 야 합 니 다.
    3)프로그램 이 단일 스 레 드 환경 에서 비 동기 화 클래스 를 사용 하면 효율 이 높다.
    4)Collections 도구 클래스 에서 unmodifiebleList/unmodifiebleMap/unmodifiebleSet/unmodifiebleSortedMap/unmodifiebleSortedSet 등 을 사용 하여 수정 할 수 없 는 List,Map,List 등 을 만 들 수 있 습 니 다.
    5)Collections 도구 클래스 에서 Collections.synchronizedList(new ArrayList()등 을 사용 하여 동기 화 할 수 있 습 니 다.
    6)Arrays.equal()을 사용 하여 두 배열 의 일치 여 부 를 판단 할 수 있다.
    이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

    좋은 웹페이지 즐겨찾기