자바 집합 클래스

9635 단어 자바 집합listset
자바 집합 은 자바 가 제공 하 는 공구 꾸러미 로 자주 사용 하 는 데이터 구 조 를 포함 합 니 다:집합,링크,대기 열,스 택,배열,맵 등.자바 집합 키 트 위 치 는 자바 util.*자바 집합 은 주로 4 개 부분 으로 나 눌 수 있 습 니 다.List 목록,Set 집합,Map 맵 맵,도구 류(Iterator 교체 기,Enumeration 매 거 진 류,Arrays 와 Collections).자바 집합 공구 꾸러미 프레임 워 크 그림(다음 과 같다):대체적으로 설명 한다위의 프레임 워 크 그림 을 보고 먼저 그의 주간,즉 Collection 과 Map 을 잡 아 라.1 Collection 은 하나의 인터페이스 로 고도 로 추상 화 된 집합 으로 집합의 기본 조작 과 속성 을 포함한다.  Collection 은 List 와 Set 두 가지 가 포함 되 어 있 습 니 다.  (01)List 는 모든 요소 에 색인 이 있 는 질서 있 는 대기 열 입 니 다.첫 번 째 요소 의 색인 값 은 0 입 니 다.          List 의 실현 클래스 는 LinkedList,Array List,Vector,Stack 이 있 습 니 다.  (02)Set 는 중복 요소 가 있 는 집합 을 허용 하지 않 는 다.          Set 의 실현 클래스 는 Hast Set 과 TreeSet 가 있 습 니 다.HashSet 은 HashMap 에 의존 하 는데 이것 은 실제 적 으로 HashMap 을 통 해 이 루어 진 것 이다.트 리 셋 은 트 리 맵 에 의존 하 는데 사실상 트 리 맵 을 통 해 이 루어 진다.2 맵 은 키-value 키 값 이 맞 는 맵 인터페이스 입 니 다.맵 의 모든 요 소 는'하나의 key'와'key 에 대응 하 는 value'를 포함 합 니 다.   AbstractMap 은 추상 적 인 클래스 로 Map 인터페이스 의 대부분 API 를 실현 합 니 다.HashMap,TreeMap,Weak HashMap 은 모두 AbstractMap 에 계승 되 었 다.   Hashtable 은 Dictionary 인터페이스 에 계승 되 었 지만 Map 인 터 페 이 스 를 실현 했다.다음은 Iterator 를 보 겠 습 니 다.그것 은 집합 을 옮 겨 다 니 는 도구 이다.즉,우 리 는 보통 Iterator 교체 기 를 통 해 집합 을 옮 겨 다 닌 다.Collection 이 Iterator 에 의존 하 는 이 유 는 Collection 의 실현 류 가 모두 iterator()함 수 를 실현 하고 Iterator 대상 을 되 돌려 야 하기 때 문 입 니 다.List Iterator 는 List 를 옮 겨 다 니 기 위해 존재 합 니 다.Enumeration 을 보면 JDK 1.0 이 도입 한 추상 류 다.역할 은 Iterator 와 마찬가지 로 집합 을 옮 겨 다 닙 니 다.그러나 Enumeration 의 기능 은 Iterator 보다 적다.위의 그래프 에서 Enumeration 은 Hashtable,Vector,Stack 에서 만 사용 할 수 있 습 니 다.마지막 으로 Arrays 와 Collections 를 보 세 요.그것들 은 배열 을 조작 하고 집합 하 는 두 가지 도구 류 이다.위의 전체적인 틀 이 생 긴 후에 우 리 는 다음 에 각 유형 에 대해 각각 분석 을 한다.
Collection 소개 아래 Collection 의 일부 프레임 워 크 류 의 관계 도 를 살 펴 보 자Collection 은 하나의 인터페이스 이 고 주요 한 두 가지 가 List 와 Set 이다.List 와 Set 는 모두 인터페이스 로 Collection 에 계승 된다.List 는 질서 있 는 대기 열 입 니 다.List 에는 중복 되 는 요소 가 있 습 니 다.그리고 Set 는 수학 개념의 집합 으로 Set 에는 중복 요소 가 없습니다!List 와 Set 는 모두 각자 의 실현 류 를 가지 고 있다.  편 의 를 위해 우 리 는 AbstractCollection 추상 류 를 추상 화 했 고 Collection 중의 대부분 함 수 를 실현 했다.이렇게 하면 Collection 의 실현 류 에서 우 리 는 AbstractCollection 을 계승 하여 중복 인 코딩 을 줄 일 수 있다.AbstractList 와 AbstractSet 은 모두 AbstractCollection 에 계승 되 고 구체 적 인 List 실현 류 는 AbstractList 에 계승 되 며 Set 의 실현 류 는 AbstractSet 에 계승 된다.  또한 Collection 에는 iterator()함수 가 있 습 니 다.Iterator 인 터 페 이 스 를 되 돌려 주 는 역할 을 합 니 다.보통 우 리 는 Iterator 교체 기 를 통 해 집합 을 옮 겨 다 닌 다.ListIterator 는 List 인터페이스 특유 의 것 으로 List 인터페이스 에서 ListIterator()를 통 해 ListIterator 대상 을 되 돌려 줍 니 다.  다음은 각 인터페이스 와 추상 류 의 소 개 를 살 펴 보 자.그리고 실현 류 에 대해 자세히 알 아 보 자.Collection 의 정 의 는 다음 과 같다. 이것 은 인터페이스 로 고도 로 추상 화 된 집합 으로 집합 의 기본 적 인 작업 을 포함한다.추가,삭제,비우 기,옮 겨 다 니 기(읽 기),비어 있 는 지,크기 를 가 져 오 는 지,특정한 요 소 를 보호 하 는 지 등 을 포함한다.
Collection 인터페이스의 모든 하위 클래스(직접 하위 클래스 와 간접 하위 클래스)는 반드시 2 가지 구조 함 수 를 실현 해 야 한다.매개 변수 가 없 는 구조 함수 와 매개 변 수 는 Collection 의 구조 함수 이다.파 라 메 터 를 가 진 구조 함수 로 Collection 의 유형 을 바 꿀 수 있 습 니 다

public interface Collection<E> extends Iterable<E> {}
 2 List 소개 List 의 정 의 는 다음 과 같다

// Collection API
abstract boolean         add(E object)
abstract boolean         addAll(Collection<? extends E> collection)
abstract void            clear()
abstract boolean         contains(Object object)
abstract boolean         containsAll(Collection<?> collection)
abstract boolean         equals(Object object)
abstract int             hashCode()
abstract boolean         isEmpty()
abstract Iterator<E>     iterator()
abstract boolean         remove(Object object)
abstract boolean         removeAll(Collection<?> collection)
abstract boolean         retainAll(Collection<?> collection)
abstract int             size()
abstract <T> T[]         toArray(T[] array)
abstract Object[]        toArray()
List 는 Collection 에 계승 되 는 인터페이스,즉 List 는 집합 중의 하나 이다.List 는 질서 있 는 대기 열 입 니 다.List 의 모든 요 소 는 색인 이 있 습 니 다.첫 번 째 요소 의 색인 값 은 0 이 고,이후 요소 의 색인 값 은 순서대로+1 입 니 다.set 와 달리 List 에 서 는 중복 되 는 요 소 를 허용 합 니 다.List 의 공식 소 개 는 다음 과 같 습 니 다.A List is a collection which maintains an ordering for its elements.List 에 있 는 Every element has an index.Each element can thus be accessed by its index,with the first index being zero.일반적으로 Lists allow duplicate elements,as compared to Sets,where elements have to be unique. API 에 대해 서List 가 Collection 인터페이스 에 계승 되 었 으 니 Collection 의 모든 함수 인 터 페 이 스 를 자 연 스 럽 게 포함 합 니 다.List 는 질서 있 는 대기 열 이기 때문에 API 인터페이스 도 추가 로 있 습 니 다.주로'지정 한 위치의 요 소 를 추가,삭제,가 져 오기,수정 하기','List 의 하위 대기 열 가 져 오기'등 이 있 습 니 다

public interface List<E> extends Collection<E> {}
 3.Set 프로필 Set 의 정 의 는 다음 과 같다

// Collection API
abstract boolean         add(E object)
abstract boolean         addAll(Collection<? extends E> collection)
abstract void            clear()
abstract boolean         contains(Object object)
abstract boolean         containsAll(Collection<?> collection)
abstract boolean         equals(Object object)
abstract int             hashCode()
abstract boolean         isEmpty()
abstract Iterator<E>     iterator()
abstract boolean         remove(Object object)
abstract boolean         removeAll(Collection<?> collection)
abstract boolean         retainAll(Collection<?> collection)
abstract int             size()
abstract <T> T[]         toArray(T[] array)
abstract Object[]        toArray()
// Collection,List API:
abstract void                add(int location, E object)
abstract boolean             addAll(int location, Collection<? extends E> collection)
abstract E                   get(int location)
abstract int                 indexOf(Object object)
abstract int                 lastIndexOf(Object object)
abstract ListIterator<E>     listIterator(int location)
abstract ListIterator<E>     listIterator()
abstract E                   remove(int location)
abstract E                   set(int location, E object)
abstract List<E>             subList(int start, int end)
Set 는 Collection 에 계승 되 는 인터페이스 이 고 Set 도 집합 중의 하나 이다.set 는 중복 요소 가 없 는 집합 입 니 다.API 에 대해 서Set 의 API 와 Collection 은 완전히 같다

public interface Set<E> extends Collection<E> {}
 4 AbstractCollection AbstractCollection 의 정 의 는 다음 과 같다.Public abstract class AbstractCollectionimplements Collection{}AbstractCollection 은 추상 적 인 클래스 로 Collection 에서 iterator()와 size()를 제외 한 함 수 를 실현 한다.AbstractCollection 의 주요 역할:Collection 인터페이스 의 대부분 함 수 를 실현 합 니 다.이로써 다른 종류의 Collection 을 편리 하 게 실현 할 수 있다.예 를 들 어 ArrayList,LinkedList 등 이다.이런 종류의 Collection 인 터 페 이 스 를 실현 하려 면 AbstractCollection 을 계승 함으로써 대부분의 인 터 페 이 스 를 실현 했다. 5 AbstractList AbstractList 의 정 의 는 다음 과 같다.public abstract class AbstractListextends AbstractCollectionimplements List{}AbstractList 는 AbstractCollection 에 계승 되 고 List 인 터 페 이 스 를 실현 하 는 추상 적 인 클래스 이다.이것 은 List 에서 size(),get(int location)을 제외 한 함 수 를 실현 했다.AbstractList 의 주요 역할:List 인터페이스 의 대부분 함 수 를 실현 합 니 다.다른 종류의 상속 리스트 를 편리 하 게 할 수 있 습 니 다.또한 AbstractCollection 에 비해 AbstractList 추상 류 에서 iterator()인 터 페 이 스 를 실현 했다. 6 AbstractSet AbstractSet 의 정 의 는 다음 과 같다.public abstract class AbstractSetextends AbstractCollectionimplements Set{}AbstractSet 은 AbstractCollection 에 계승 되 고 set 인 터 페 이 스 를 실현 하 는 추상 적 인 클래스 이다.Set 인 터 페 이 스 는 Collection 인터페이스 에 있 는 API 와 완전히 같 기 때문에 Set 도 자신 만 의 API 가 없다.AbstractCollection 과 마찬가지 로 List 에서 iterator()와 size()를 제외 한 함 수 를 실현 합 니 다.AbstractSet 의 주요 역할:Set 인터페이스 의 대부분 함 수 를 실현 합 니 다.다른 클래스 가 set 인 터 페 이 스 를 실현 하 는 데 편리 합 니 다. 7 Iterator Iterator 의 정 의 는 다음 과 같다.집합 은 Iterator 를 통 해 집합 중의 요 소 를 옮 겨 다 닐 수 있다.Iterator 가 제공 하 는 API 인 터 페 이 스 는 다음 요소 가 존재 하 는 지,다음 요 소 를 가 져 오 는 지,현재 요 소 를 삭제 하 는 지 를 포함한다.메모:Iterator 가 Collection 을 옮 겨 다 닐 때 fail-fast 메커니즘 입 니 다.즉,특정한 스 레 드 A 가 iterator 를 통 해 특정한 집합 을 옮 겨 다 니 는 과정 에서 이 집합 내용 이 다른 스 레 드 에 의 해 바 뀌 면;그러면 스 레 드 A 가 집합 에 접근 할 때 Concurrent ModificationException 이상 을 던 져 fail-fast 이벤트 가 발생 합 니 다.fail-fast 에 대한 자세 한 내용 은 뒤에서 전문 적 으로 설명 하 겠 습 니 다.TODO

// Set API
abstract boolean         add(E object)
abstract boolean         addAll(Collection<? extends E> collection)
abstract void             clear()
abstract boolean         contains(Object object)
abstract boolean         containsAll(Collection<?> collection)
abstract boolean         equals(Object object)
abstract int             hashCode()
abstract boolean         isEmpty()
abstract Iterator<E>     iterator()
abstract boolean         remove(Object object)
abstract boolean         removeAll(Collection<?> collection)
abstract boolean         retainAll(Collection<?> collection)
abstract int             size()
abstract <T> T[]         toArray(T[] array)
abstract Object[]         toArray()
8 ListIterator ListIterator 의 정 의 는 다음 과 같다

public interface Iterator<E> {}
ListIterator 는 Iterator 에 계승 되 는 인터페이스 로 대기 열 교체 기 이다.편리 List 에 사용 되 며 앞/뒤로 옮 겨 다 닐 수 있 습 니 다.Iterator 에 비해 이전 요소 가 추가 되 었 는 지,이전 요소 가 져 왔 는 지 등 API 인 터 페 이 스 를 추가 합 니 다

// Iterator API
abstract boolean hasNext()
abstract E next()
abstract void remove()
 

좋은 웹페이지 즐겨찾기