Java java지도 시간 JAVA 컬렉션 클래스 요약

JAVA 컬렉션 클래스 요약

Jul 20, 2017 pm 01:17 PM
java 요약 모으다

1. 집합과 배열

배열(기본 데이터 유형을 저장할 수 있음)은 객체를 저장하는 데 사용되는 컨테이너입니다. 그러나 배열의 길이는 고정되어 있어 객체 ​​수를 알 수 없는 경우에는 사용하기에 적합하지 않습니다.

컬렉션(객체만 저장할 수 있고 객체 유형은 다를 수 있음)은 길이가 다양하며 대부분의 상황에서 사용할 수 있습니다.

2. 계층적 관계

그림과 같이 그림에서 실선 테두리는 구현 클래스, 폴리선 테두리는 추상 클래스, 점선 테두리는 인터페이스

컬렉션 인터페이스는 컬렉션 클래스의 루트 인터페이스입니다. Java에는 이 인터페이스에 대한 직접적인 구현 클래스가 없습니다. 그러나 이는 Set과 List라는 두 가지 인터페이스를 생성하도록 상속되었습니다. 세트에는 중복된 요소가 포함될 수 없습니다. 목록은 반복되는 요소를 포함할 수 있고 색인별로 액세스를 제공하는 정렬된 컬렉션입니다.

Map은 Java.util 패키지의 또 다른 인터페이스이며 Collection 인터페이스와 관련이 없으며 서로 독립적이지만 둘 다 컬렉션 클래스의 일부입니다. 맵에는 키-값 쌍이 포함되어 있습니다. 맵에는 중복 키가 포함될 수 없지만 동일한 값이 포함될 수 있습니다.

Iterator, 모든 컬렉션 클래스는 컬렉션의 요소를 순회하기 위한 인터페이스인 Iterator 인터페이스를 구현합니다. 여기에는 주로 다음 세 가지 메서드가 포함됩니다.
1.hasNext() 다음 요소가 있는지 여부.
2.next()는 다음 요소를 반환합니다.
3.remove()는 현재 요소를 삭제합니다.

3. 여러 가지 중요한 인터페이스 및 클래스 소개

1. 목록(순서, 반복 가능)
목록에 저장된 개체는 인덱스에 중점을 두고 있으며 빠른 쿼리를 위한 일련의 인덱스 관련 메서드를 가지고 있습니다. 속도. 목록 모음에 데이터를 삽입하거나 삭제하면 후속 데이터의 이동이 수반되므로 모든 데이터 삽입 및 삭제가 느려집니다.

2. 집합(정렬되지 않음, 반복 불가)
집합에 저장된 개체는 순서가 없으며 반복될 수 없습니다. 집합에 포함된 개체는 특정 방식으로 정렬되지 않고 단순히 집합에 추가됩니다.

3. 맵(키-값 쌍, 고유 키, 고유하지 않은 값)
맵 컬렉션에는 키-값 쌍이 저장되지만 값은 반복될 수 있습니다. 키에 따라 값을 얻습니다. 맵 컬렉션을 순회할 때 먼저 키의 집합 컬렉션을 얻은 다음, 집합 컬렉션을 순회하여 해당 값을 얻습니다.

비교는 다음과 같습니다.

예 HashMap입니다.

4. 순회

클래스 세트에는 다음과 같은 4가지 일반적인 출력 방법이 제공됩니다.

1) Iterator: 반복 출력, 가장 일반적으로 사용되는 출력 방법입니다.

2) ListIterator: Iterator의 하위 인터페이스로, 특별히 List의 내용을 출력하는 데 사용됩니다.

3) foreach 출력: JDK1.5 이후에 제공되는 새로운 기능으로, 배열이나 집합을 출력할 수 있습니다.

4) for 루프

의 코드 예시는 다음과 같습니다.

for의 형식: for (int i=0;i

형식 foreach: for (int i : arr) {...}

반복자의 형태:
Iterator it = arr.iterator();
while(it.hasNext()){ object o =it.next(); ...}

5. ArrayList 및 LinkedList

ArrayList와 LinkedList는 사용법에는 차이가 없지만 기능에는 여전히 차이가 있습니다. LinkedList는 추가 및 삭제가 많지만 쿼리 작업이 거의 없는 상황에서 자주 사용되는 반면 ArrayList는 그 반대입니다.

6. 맵 컬렉션

구현 클래스: HashMap, Hashtable, LinkedHashMap 및 TreeMap

HashMap

HashMap은 키의 HashCode 값에 따라 데이터를 저장하며 그 값은 다음과 같습니다. 키에 따라 직접 획득되며, 접근 속도가 빠르고, 통과 시 데이터 획득 순서가 완전히 무작위입니다. 키 객체는 반복될 수 없기 때문에 HashMap은 하나의 레코드의 키만 최대 Null로 허용하고, 여러 레코드의 값은 Null로 허용합니다.

Hashtable

Hashtable은 HashMap과 유사합니다. HashMap의 스레드 안전 버전은 스레드 동기화를 지원합니다. 즉, 언제든지 하나의 스레드만 Hashtable에 쓸 수 있으며, 이로 인해 Hashtale이 Dictionary 클래스에서 상속되기 때문에 속도가 느려집니다. 동시에 기록된 키나 값이 null이 되는 것을 허용하지 않는 것이 효율적입니다.

ConcurrentHashMap

스레드로부터 안전하고 잠금으로 구분됩니다. ConcurrentHashMap은 내부적으로 세그먼트를 사용하여 이러한 다양한 부분을 나타냅니다. 각 세그먼트는 실제로 작은 해시 테이블이며 자체 잠금을 갖습니다. 여러 수정 작업이 서로 다른 세그먼트에서 발생하는 한 동시에 발생할 수 있습니다.

LinkedHashMap

LinkedHashMap은 Iteraor로 LinkedHashMap을 순회할 때 반드시 먼저 얻은 레코드가 먼저 삽입됩니다. 순회 중에는 HashMap보다 느리며 HashMap의 모든 특성을 갖습니다.

TreeMap

TreeMap은 키에 따라 저장하는 레코드를 정렬할 수 있는 SortMap 인터페이스를 구현합니다. 기본값은 키 값의 오름차순(자연 순서)입니다. 정렬 비교기를 사용하여 지정할 수도 있습니다. TreeMap을 통과하면 얻은 레코드가 정렬됩니다. 키 값은 비동기식일 수 없습니다.

map traversal

첫 번째 유형: KeySet()
Map의 모든 키를 세트 컬렉션에 저장하세요. 세트에는 반복자가 있기 때문입니다. 모든 키는 반복적으로 검색한 다음 get 메서드를 기반으로 검색할 수 있습니다. 각 키에 해당하는 값을 가져옵니다. keySet(): 반복 후에는 get()을 통해서만 키를 얻을 수 있습니다.
데이터 행의 기본 키를 얻을 때 HashMap.keySet() 메서드를 사용하고 이 메서드에서 반환된 Set 결과의 데이터가 순서대로 정렬되어 있으므로 얻은 결과는 순서가 틀립니다.
일반적인 사용법은 다음과 같습니다:
Map map = new HashMap();
map.put("key1","lisi1");
map.put("key2","lisi2");
map.put(" key3" ,"lisi3");
map.put("key4","lisi4");
//먼저 지도 컬렉션에 있는 모든 키의 집합 컬렉션을 가져옵니다. keyset()
Iterator it = map.keySet() .iterator() ;
//반복자를 가져옵니다
while(it.hasNext()){
Object key = it.next();
System.out.println(map.get(key));
}

두 번째:entrySet()
Set>entrySet() //이 맵에 포함된 매핑 관계의 Set 뷰를 반환합니다. (관계는 키-값 쌍입니다) 즉, (키-값) 전체가 Set 컬렉션에 일대일로 저장됩니다. Map.Entry는 매핑 관계를 나타냅니다. EntrySet(): 반복 후 e.getKey() 및 e.getValue()를 통해 키와 값을 얻을 수 있습니다. 반환되는 것은 Entry 인터페이스입니다.
일반적인 사용법은 다음과 같습니다:
Map map = new HashMap();
map.put("key1","lisi1");
map.put("key2","lisi2");
map.put(" key3" ,"lisi3");
map.put("key4","lisi4");
//지도 컬렉션에서 매핑 관계를 꺼내어 집합 컬렉션에 저장합니다
Iterator it = map.entrySet() .iterator() ;
while(it.hasNext()){
Entry e =(Entry) it.next();
System.out.println("Key"+e.getKey () + "값은 " + e.getValue ());
}
두 번째 방법인 EntrySet() 방법을 사용하는 것이 더 효율적입니다.
keySet은 실제로 두 번 순회됩니다. 한 번은 반복자로 변환하고, 한 번은 HashMap에서 키 값을 검색합니다. 엔트리 세트는 처음에만 순회하므로 키와 값을 모두 항목에 넣기 때문에 속도가 더 빠릅니다. 두 순회 간의 순회 시간 차이는 여전히 분명합니다.

7. 주요 구현 클래스

Vector와 ArrayList
1의 차이점 요약 Vector는 스레드 동기식이므로 스레드로부터 안전하지만 arraylist는 스레드 비동기식이므로 안전하지 않습니다. 스레드 안전 요소를 고려하지 않는 경우 일반적으로 arraylist를 사용하는 것이 더 효율적입니다.
2. 컬렉션의 요소 수가 현재 컬렉션 배열의 길이보다 큰 경우 벡터 증가율은 현재 배열 길이의 100%이고 arraylist 증가율은 현재 배열 길이의 50%입니다. 컬렉션에서 상대적으로 많은 양의 데이터를 사용하는 경우 벡터를 사용하면 몇 가지 이점이 있습니다.
3. 특정 위치에서 데이터를 찾는 경우 벡터와 arraylist가 사용하는 시간은 동일합니다. 데이터에 자주 액세스하는 경우 이때는 벡터와 arraylist를 모두 사용할 수 있습니다. 그리고 지정된 위치를 이동하면 이후의 모든 요소가 이동하게 되는 경우, 지정된 위치의 데이터만 이동하고 다른 요소는 이동하지 않으므로 이때 linklist 사용을 고려해야 합니다.
ArrayList와 Vector는 배열을 사용하여 데이터를 저장합니다. 배열 요소의 개수는 실제 저장된 데이터보다 커서 요소를 추가하고 삽입할 수 있습니다. 둘 다 요소의 직접 일련 번호 인덱싱을 허용하지만 데이터를 삽입하려면 배열 이동과 같은 메모리 작업이 필요합니다. Vector는 동기화된 방법(스레드 안전성)을 사용하므로 ArrayList보다 성능이 나쁩니다. LinkedList는 저장을 위해 양방향 연결 목록을 사용합니다. 역방향 순회가 가능하지만, 데이터 삽입 시에는 레코드만 필요합니다. 이 항목의 앞, 뒤 용어만으로도 충분하므로 여러 번 삽입하는 것이 더 빠릅니다.

arraylist 및 linkedlist
1.ArrayList는 동적 배열 기반의 데이터 구조를 구현하고, LinkedList는 연결된 목록 기반의 데이터 구조를 구현합니다.
2. 무작위 액세스를 가져오고 설정하려면 LinkedList가 포인터를 이동해야 하기 때문에 ArrayList가 LinkedList보다 낫습니다.
3. 신규 및 삭제 작업 추가 및 제거의 경우 ArrayList가 데이터를 이동해야 하기 때문에 LinedList가 유리합니다. 이는 실제 상황에 따라 다릅니다. 단일 데이터만 삽입하거나 삭제하는 경우 ArrayList가 LinkedList보다 빠릅니다. 그러나 데이터를 무작위로 일괄적으로 삽입하고 삭제하는 경우 ArrayList에 비해 LinkedList의 속도가 훨씬 빠릅니다. 왜냐하면 ArrayList에 데이터 조각이 삽입될 때마다 삽입 지점과 그 이후의 모든 데이터를 이동해야 하기 때문입니다.

HashMap 및 TreeMap
1. HashMap은 해시코드를 사용하여 콘텐츠를 빠르게 검색하는 반면, TreeMap의 모든 요소는 특정 고정 순서를 유지합니다. 정렬된 결과를 얻으려면 TreeMap을 사용해야 합니다(HashMap에서는 요소의 순서가 그렇지 않습니다.) 결정된).
2. Map에서 요소를 삽입, 삭제 및 찾으려면 HashMap이 최선의 선택입니다. 그러나 자연 순서나 사용자 정의 순서로 키를 반복하려면 TreeMap이 더 좋습니다. HashMap을 사용하려면 추가된 키 클래스가 hashCode() 및 equals() 구현을 명확하게 정의해야 합니다.
두 맵의 요소는 동일하지만 순서가 다르기 때문에 hashCode()가 다릅니다.
동일한 테스트를 수행합니다.
HashMap에서는 동일한 값의 맵이 다른 순서이고 같음은 false입니다.
treeMap에서 동일한 값의 맵은 다른 순서이고 같음은 true입니다. 이는 treeMap이 true임을 나타냅니다. equals( )에 순서가 있습니다.

HashTable 및 HashMap
1. Hashtable은 스레드로부터 안전합니다. 즉, HashMap은 스레드로부터 안전하고 동기적이지 않습니다.
2. HashMap은 하나의 null 키와 여러 개의 null 값을 허용합니다.
3. 해시테이블의 키와 값은 null이 될 수 없습니다.

 

주문 여부

요소 반복 허용 여부

수집

아니요

List

Set

AbstractSet

안돼

안돼

 

HashSet

키-값을 사용하여 데이터를 매핑하고 저장합니다. 키는 고유해야 하며 값은 반복될 수 있습니다.

 

 

TreeMap

은 (이진 정렬 트리 사용)

위 내용은 JAVA 컬렉션 클래스 요약의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 채팅 명령 및 사용 방법
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

자바의 완전수 자바의 완전수 Aug 30, 2024 pm 04:28 PM

Java의 완전수 가이드. 여기서는 정의, Java에서 완전 숫자를 확인하는 방법, 코드 구현 예제에 대해 논의합니다.

Java의 난수 생성기 Java의 난수 생성기 Aug 30, 2024 pm 04:27 PM

Java의 난수 생성기 안내. 여기서는 예제를 통해 Java의 함수와 예제를 통해 두 가지 다른 생성기에 대해 설명합니다.

자바의 웨카 자바의 웨카 Aug 30, 2024 pm 04:28 PM

Java의 Weka 가이드. 여기에서는 소개, weka java 사용 방법, 플랫폼 유형 및 장점을 예제와 함께 설명합니다.

Java의 스미스 번호 Java의 스미스 번호 Aug 30, 2024 pm 04:28 PM

Java의 Smith Number 가이드. 여기서는 정의, Java에서 스미스 번호를 확인하는 방법에 대해 논의합니다. 코드 구현의 예.

Java Spring 인터뷰 질문 Java Spring 인터뷰 질문 Aug 30, 2024 pm 04:29 PM

이 기사에서는 가장 많이 묻는 Java Spring 면접 질문과 자세한 답변을 보관했습니다. 그래야 면접에 합격할 수 있습니다.

Java 8 Stream foreach에서 나누거나 돌아 오시겠습니까? Java 8 Stream foreach에서 나누거나 돌아 오시겠습니까? Feb 07, 2025 pm 12:09 PM

Java 8은 스트림 API를 소개하여 데이터 컬렉션을 처리하는 강력하고 표현적인 방법을 제공합니다. 그러나 스트림을 사용할 때 일반적인 질문은 다음과 같은 것입니다. 기존 루프는 조기 중단 또는 반환을 허용하지만 스트림의 Foreach 메소드는이 방법을 직접 지원하지 않습니다. 이 기사는 이유를 설명하고 스트림 처리 시스템에서 조기 종료를 구현하기위한 대체 방법을 탐색합니다. 추가 읽기 : Java Stream API 개선 스트림 foreach를 이해하십시오 Foreach 메소드는 스트림의 각 요소에서 하나의 작업을 수행하는 터미널 작동입니다. 디자인 의도입니다

Java의 날짜까지의 타임스탬프 Java의 날짜까지의 타임스탬프 Aug 30, 2024 pm 04:28 PM

Java의 TimeStamp to Date 안내. 여기서는 소개와 예제와 함께 Java에서 타임스탬프를 날짜로 변환하는 방법에 대해서도 설명합니다.

캡슐의 양을 찾기위한 Java 프로그램 캡슐의 양을 찾기위한 Java 프로그램 Feb 07, 2025 am 11:37 AM

캡슐은 3 차원 기하학적 그림이며, 양쪽 끝에 실린더와 반구로 구성됩니다. 캡슐의 부피는 실린더의 부피와 양쪽 끝에 반구의 부피를 첨가하여 계산할 수 있습니다. 이 튜토리얼은 다른 방법을 사용하여 Java에서 주어진 캡슐의 부피를 계산하는 방법에 대해 논의합니다. 캡슐 볼륨 공식 캡슐 볼륨에 대한 공식은 다음과 같습니다. 캡슐 부피 = 원통형 볼륨 2 반구 볼륨 안에, R : 반구의 반경. H : 실린더의 높이 (반구 제외). 예 1 입력하다 반경 = 5 단위 높이 = 10 단위 산출 볼륨 = 1570.8 입방 단위 설명하다 공식을 사용하여 볼륨 계산 : 부피 = π × r2 × h (4

See all articles