자바 용기 류 지식 점 상세 요약
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 을 보십시오)
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()을 사용 하여 두 배열 의 일치 여 부 를 판단 할 수 있다.
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Is Eclipse IDE dying?In 2014 the Eclipse IDE is the leading development environment for Java with a market share of approximately 65%. but ac...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.