심층 자바 컬렉션 프레임 워크, 같은 주제에이 봐의 이해

자바 컬렉션 프레임 워크

긴 자바 2 이전, 자바는 임시 범주를 제공합니다. 예를 들어 사전, 벡터, 스택 및 스토리지와 객체의 조작이 클래스의 속성.

이 클래스는 매우 유용하지만, 그들은 중앙 통합 테마를 부족하지만. 이러한 이유로, 벡터 클래스를 사용하고 속성 클래스는 매우 다른이 사용합니다.

컬렉션 프레임 워크는 다음과 같은 목표를 충족하도록 설계되었습니다 :

이 프레임 워크는 고성능해야합니다. 기본 설정 (동적 배열, 연결리스트, 나무, 해시 테이블) 구현은 효율적이어야합니다.

이 프레임 워크는 다른 유형의 수집을 허용, 유사한 방식으로, 높은 수준의 상호 동작한다.

컬렉션의 확장 및 적응은 간단합니다.

이를 위해, 전체 컬렉션 표준 인터페이스 집합 프레임을 중심으로 설계된다. , TreeSet의에 LinkedList의, HashSet에, 그래서 당신이 인터페이스를 통해 자신의 수집을 구현할 수 있다는 점을 제외 : 당신은 같은 달성하기 위해 이러한 표준 인터페이스를 사용할 수 있습니다.

컬렉션 프레임 워크 대표와 통합 스키마 컬렉션을 조작하는 데 사용됩니다. 다음을 포함하는 모든 프레임 워크의 설정 :

인터페이스 : 추상 데이터 타입의 컬렉션을 나타냅니다. 인터페이스는 대표 별도의 세부 사항의 컬렉션의 조작을 할 수 있습니다. 객체 지향 언어에서, 인터페이스는 일반적으로 계층 구조를 형성한다.

(들)을 구현 : 그것은 일련의 인터페이스의 구체적인 구현입니다. 본질적으로, 이들은 재사용 데이터 구조이다.

알고리즘 : 검색 및 분류 : 등의 실행에있어서의 컬렉션 인터페이스를 구현하는 일부 유용한 계산 개체. 동일 유사한 인터페이스 구현 다른 방법을 가질 수 있기 때문에 다형성, 그것이 이러한 알고리즘 칭한다.

컬렉션뿐만 아니라, 프레임은 또한 여러 인터페이스와지도 클래스를 정의합니다. 저장지도는 키 / 값 쌍입니다. 지도하지 컬렉션에도 불구하고, 그러나 그들은 완전히 컬렉션에 통합되어 있습니다.

 

그림과 같이 프레임 워크 설정 :

심층 자바 컬렉션 프레임 워크, 같은 주제에이 봐의 이해

 

요구 프레임을 안내 수집 백을 사용하여 그렇게 할 때 자바 프레임 워크는 쉽게 이용 인터페이스와 클래스, 자바 java.util의 패키지 집합 프레임이 위치에, 고성능의 세트를 제공한다. 다음은 몇 가지 일반적인 인터페이스와 인터페이스 구현 클래스입니다.

공통 인터페이스 구현 클래스 목록

목록 당신은 (때로는 우리가 "순서"를 호출)의 널 (null) 수집 할 수 있습니다, 순서의 요소가 반복 될 수있다.

ArrayList를

가장 흔히 사용되는 클래스리스트 인터페이스는 가변 길이를 이용하여 기본 동적 배열을 달성했다. 요소가 초기 용량, 새로운 배열 길이 = 길이 + 오래 오래 어레이 배열 길이 / 2의 수보다 클 때의 ArrayList 팽창의 초기 용량 (용적 = 10)을 갖는다.

각 요소는 지수의 고정 된 위치를 가지므로, 인덱스 질의 요소는 매우 빠르게 속도에 따라 때문에. 요소가 중간에 삽입되어있는 경우, 성능이 상대적으로 저하 될 것이다 있도록 시프트 위로 모든 요소입니다.

동시 액세스 제어 하가없는, 그래서 비 스레드 안전 컬렉션이다. 이 요소는 null 요소를 반복 허용한다.

LinkedList의

NULL 요소를 허용 양방향 링크 목록 인터페이스 구현 클래스입니다. 그것은 성능의 명령 세트이지만, 메모리는 실제로 저장 질환이다.

이유, 곧 속도를 삽입하지만, ArrayList를보다 쿼리 속도의 요소가 훨씬 느린 속도 있도록. 비 스레드 안전 컬렉션입니다.

벡터

벡터는 기본 동적 배열 (10)의 디폴트 초기 용량을 이용하여, 초기 용량이 설계 방법에 의해 특정 할 수 있고, 확장의 증분을 지정 구현.

증설 룰은 새로운 용량 = 2 * 이전의 증분 용량 확장 지정되지 않은 경우, 새로운 + = 이전 확장 용량 증가를 의미한다. 주요 방법은 동기화 추가, 그래서 스레드 안전 컬렉션이 있습니다.

설정 컬렉션 인터페이스

랜덤, 비 반복 : 컬렉션 세트 인터페이스 기능이 포함 달성하는 경우

첨가 원소의 순서와 출력 요소의 순서는 일치하지 않는다.

뭔가 거의 컬렉션에 존재하는 경우 수집 시스템의 고유 한 특성으로 지불 관심은 중복 요소를 저장하지 않습니다, 말할 수있다.

HashSet의

빠른 액세스 속도 : HashSet의 기본 해시 테이블 지원, 특성에 사용됩니다.

HashSet의 요소를 추가하는 경우, 먼저 HashSet의 요소의 해시 값의 요소를 얻을 hashCode 메소드를 호출,

이어서 회전 조작 후의 요소의 해시 값은, 상기 해쉬 테이블에있는 기억 소자의 위치를 ​​계산할 수있다.

LinkedHashSet의

사용의 LinkedHashMap LinkedHashSet의 바닥은 HashSet에 동작 가능하고 HashSet에, 구현에 따라서는 단 네 LinkedHashSet의 시공 방법을 제공하는 매우 간단되는 모든 메소드에 대해 상속 같은 모든 요소를 ​​보유한다.

그리고, 파라미터 식별자를 전달하여, 상위 클래스의 생성자의 LinkedHashMap을 구현하도록 구성된 하부 층은, 동작은 부모 클래스 HashSet의 관련 동작과 동일 호출 방법은 직접 부모 클래스 HashSet에 문의 할 수있다.

TreeSet의

TreeSet의 바닥은 빨간색입니다 - 블랙 트리 데이터 구조 구현, 자연 요소 (문자열)의 기본 순서.

반환 값을 비교할 때 두 객체 경우, 반복 요소 0입니다.

일반적인지도 인터페이스의 구현 클래스

지도는 저장 요소의 일반적인 방법을 제공합니다. 각각의 키 값에 매핑되고, (a "키"및 "값"이라 함) 소자의 수집을 저장하기위한 약도.

개념적으로, 당신은 숫자 키를 사용하여지도 목록으로 볼 수있다. 사실, 직접 연결되지 않은 둘 java.util의 중국과 외국에서 목록과지도의 정의에 추가한다.

이 문서는 자바 분포지도로 제공의 핵심에 초점을 맞출 것이다, 또한 채택하거나 전용지도 응용 프로그램 별 데이터에보다 적합 구현하는 방법을 소개합니다.

HashMap의

첨가 원소는의 HashMap에, hashCode 메소드가 우선 해시 코드 값을 획득하는 키 요소를 호출하고, 해쉬 테이블 소자의 저장 위치의 동작을 통해 산출 할 수있는 경우.

그리고 널 널 (null) 값을 허용하고 열쇠입니다. 이 클래스는, 매핑의 순서를 보장하지 않습니다 특히, 그 순서를 영원히 지속되는 것은 아닙니다.

해시

HashMap에 동기화되지 않은 상태 해시 느린 해시 테이블 null 키와 값을 허용하지 않도록 해시는 (동기화 기능) 동기화된다.

해시 맵이) 반복자는 이들의 HashMap을 지원하는 값 () 아웃 많은 keySet 반환 (), entrySet (이외에 널 키와 널 값을 허용, 해시 또한 열거 키 (), 요소 ()를 지원하지만, 지금은 구현 클래스가 그 구현 열거 반복자 인터페이스를 기반으로한다.

트리 맵

기억 소자 의지 결합 선별 : 트리 맵은 레드 - 블랙 트리 (이진) 데이터 구조를 기반으로 구현되는 기능.

참고 : 요소를 추가합니다 세트가 실패를 반복하는 경우 설정 요소는 반복되지 않을 수 있습니다.

키가 덮어 쓰기를 반복하면지도 키를 반복 할 수 없습니다.

출처 : 검색 엔진 최적화 기술

추천

출처www.cnblogs.com/1994jinnan/p/12287832.html