Share via


LinkedHashMap 클래스

정의

예측 가능한 반복 순서를 사용하여 인터페이스의 Map 해시 테이블 및 연결된 목록 구현입니다.

[Android.Runtime.Register("java/util/LinkedHashMap", DoNotGenerateAcw=true)]
[Java.Interop.JavaTypeParameters(new System.String[] { "K", "V" })]
public class LinkedHashMap : Java.Util.HashMap, IDisposable, Java.Interop.IJavaPeerable
[<Android.Runtime.Register("java/util/LinkedHashMap", DoNotGenerateAcw=true)>]
[<Java.Interop.JavaTypeParameters(new System.String[] { "K", "V" })>]
type LinkedHashMap = class
    inherit HashMap
    interface IMap
    interface IJavaObject
    interface IDisposable
    interface IJavaPeerable
상속
특성
구현

설명

예측 가능한 반복 순서를 사용하여 인터페이스의 Map 해시 테이블 및 연결된 목록 구현입니다. 이 구현은 HashMap 모든 항목을 통해 실행되는 이중 연결 목록을 유지 관리한다는 점에서 다릅니다. 이 연결된 목록은 일반적으로 키가 맵에 삽입된 순서(insertion-order)인 반복 순서를 정의합니다. 키가 맵에 다시 삽입되는 경우 삽입 순서는 영향을 받지 않습니다. 호출 직전에 가 반환 true 될 때 m.containsKey(k) 가 호출되면 m.put(k, v) 키가 km 에 다시 삽입됩니다.

이 구현은 와 관련된 TreeMap증가된 비용을 발생시키지 않고 (및 Hashtable)에서 제공하는 HashMap 지정되지 않은 일반적으로 혼란스러운 순서에서 클라이언트를 절약합니다. 원본 맵의 구현에 관계없이 원본과 순서가 같은 맵의 복사본을 생성하는 데 사용할 수 있습니다.

void foo(Map m) {
                    Map copy = new LinkedHashMap(m);
                    ...
                }

이 기술은 모듈이 입력에 대한 맵을 사용하고 복사한 후 나중에 복사의 순서에 따라 순서가 결정되는 결과를 반환하는 경우에 특히 유용합니다. (클라이언트는 일반적으로 제시된 것과 동일한 순서로 반환된 항목이 있는 것을 주셔서 감사합니다.)

가장 최근에 액세스한 항목에서 가장 최근(액세스 순서)에 이르기까지 항목이 마지막으로 액세스된 순서인 반복 순서가 연결된 해시 맵을 만들기 위해 특수 #LinkedHashMap(int,float,boolean) constructor 가 제공됩니다. 이러한 종류의 맵은 LRU 캐시를 빌드하는 데 적합합니다. put, , putIfAbsent, , getOrDefaultget, compute, computeIfAbsent, computeIfPresent또는 merge 메서드를 호출하면 호출이 완료된 후 해당 항목에 액세스할 수 있습니다. 메서드는 replace 값이 바뀐 경우에만 항목에 액세스할 수 있습니다. 메서드는 putAll 지정된 맵의 항목 집합 반복기에서 키-값 매핑을 제공하는 순서대로 지정된 맵의 각 매핑에 대해 하나의 항목 액세스를 생성합니다. 다른 메서드는 항목 액세스를 생성하지 않습니다. 특히 컬렉션 뷰에 대한 작업은 백업 맵의 반복 순서에 영향을 미치지 않습니다 .

#removeEldestEntry(Map.Entry) 새 매핑이 맵에 추가될 때 부실 매핑을 자동으로 제거하는 정책을 적용하도록 메서드를 재정의할 수 있습니다.

이 클래스는 모든 선택적 Map 작업을 제공하고 null 요소를 허용합니다. 와 마찬가지로 HashMap해시 함수가 버킷 간에 요소를 제대로 분산하는 경우 기본 작업(containsaddremove)에 대한 일정한 시간 성능을 제공합니다. 한 가지 예외를 제외하고 연결된 목록을 유지 관리하는 데 드는 추가 비용으로 인해 성능이 보다 약간 낮 HashMap을 수 있습니다. 의 컬렉션 뷰 LinkedHashMap 를 반복하려면 용량에 관계없이 맵 크기에 비례하는 시간이 필요합니다. 에 대한 HashMap 반복은 용량에 비례하는 시간이 필요하므로 비용이 더 많이 들 수 있습니다.

연결된 해시 맵에는 성능에 영향을 주는 두 개의 매개 변수인 초기 용량로드 팩터가 있습니다. 에 대해 HashMap정확하게 정의됩니다. 그러나 초기 용량에 대해 지나치게 높은 값을 선택하는 경우 이 클래스의 반복 시간이 용량의 영향을 받지 않으므로 이 클래스의 경우 보다 HashMap덜 심각합니다.

<strong>이 구현은 동기화되지 않습니다.</strong> 여러 스레드가 연결된 해시 맵에 동시에 액세스하고 하나 이상의 스레드가 구조적으로 <>맵을 수정하는 경우 외부에서 동기화해야 합니다<>. 이 작업은 일반적으로 맵을 자연스럽게 캡슐화하는 일부 개체에서 동기화하여 수행됩니다.

이러한 개체가 없으면 메서드를 사용하여 Collections#synchronizedMap Collections.synchronizedMap 맵을 "래핑"해야 합니다. 이는 맵에 대한 실수로 동기화되지 않은 액세스를 방지하기 위해 생성 시 가장 잘 수행됩니다.

Map m = Collections.synchronizedMap(new LinkedHashMap(...));

구조적 수정은 하나 이상의 매핑을 추가하거나 삭제하는 작업이거나, 액세스 순서가 지정된 연결된 해시 맵의 경우 반복 순서에 영향을 줍니다. 삽입 순서가 지정된 연결된 해시 맵에서 맵에 이미 포함된 키와 연결된 값을 변경하는 것만으로는 구조적 수정이 아닙니다. <strong>액세스 순서가 지정된 연결된 해시 맵에서 맵 get 을 쿼리하는 것만 구조적 수정입니다. </strong>)

이 클래스의 모든 컬렉션 뷰 메서드에서 반환된 컬렉션의 메서드에서 반환 iterator 되는 반복기는 em>fail-fast</em>입니다<. 반복기가 생성된 후 언제든지 맵이 구조적으로 수정되면 반복기의 자체 remove 메서드를 제외한 어떤 방식으로든 반복기가 을 ConcurrentModificationExceptionthrow합니다. 따라서 동시 수정에 직면하여 반복기는 나중에 결정되지 않은 시간에 임의적이고 비결정적인 동작을 위험에 빠뜨리지 않고 빠르고 깨끗하게 실패합니다.

반복기의 장애 조치(fail-fast) 동작은 일반적으로 비동기화된 동시 수정이 있을 때 하드 보장을 할 수 없으므로 보장할 수 없습니다. 장애 조치(fail-fast) 반복기는 최선을 다해 throw ConcurrentModificationException 합니다. 따라서 정확성을 위해 이 예외에 의존하는 프로그램을 작성하는 것은 잘못된 것입니다. 반복기의 장애 조치(fail-fast) 동작은 버그를 검색하는 데만 사용해야 합니다.

이 클래스의 모든 컬렉션 뷰 <메서드에서 반환된 컬렉션의 분할기 메서드에서 반환된 분할기는 em>late-binding</em>, <em>fail-fast</em> 및 추가적으로 보고 Spliterator#ORDERED합니다. <em>Note</em>: Android Nougat(API 수준 24 및 25)에서 이러한 분할기를 구현하면 보고 Spliterator#ORDERED에도 불구하고 잘못된 순서(올바른 순서를 사용하는 반복기와 일치하지 않음)가 사용됩니다. 다음 코드 조각을 사용하여 API 수준 24 및 25<에서 올바르게 정렬된 Spliterator를 가져올 수 있습니다. ul<>li>컬렉션 뷰 c = lhm.keySet()c = lhm.entrySet() 의 경우 또는 c = lhm.values()대신 c.spliterator()를 사용합니다java.util.Spliterators.spliterator(c, c.spliterator().characteristics()). <li>또는 c.parallelStream()대신 c.stream() 을 사용하여 java.util.stream.StreamSupport.stream(spliterator, false) 이러한 에서 (비대상) java.util.stream.Stream 을 생성합니다Spliterator. </ul> 이러한 해결 방법은 가 인 경우에만 lhmLinkedHashMap제안됩니다.

이 클래스는 Java Collections Framework의 멤버입니다.

1.4에 추가되었습니다.

에 대한 Java 설명서입니다 java.util.LinkedHashMap.

이 페이지의 일부는 만들고 공유하며 에 설명된 용어에 따라 사용되는 작업을 기반으로 수정됩니다.

생성자

LinkedHashMap()

기본 초기 용량(16) 및 로드 팩터(0)를 사용하여 빈 삽입 순서 LinkedHashMap 의 instance 생성합니다.

LinkedHashMap(IDictionary)

지정된 맵과 동일한 매핑을 사용하여 삽입 순서 LinkedHashMap 가 지정된 instance 생성합니다.

LinkedHashMap(Int32)

지정된 초기 용량과 기본 로드 요소(0)를 사용하여 빈 삽입 순서 LinkedHashMap 의 instance 생성합니다.

LinkedHashMap(Int32, Single)

지정된 초기 용량 및 로드 인수를 사용하여 빈 삽입 순서 LinkedHashMap 의 instance 생성합니다.

LinkedHashMap(Int32, Single, Boolean)

지정된 초기 용량, 로드 팩터 및 순서 모드를 사용하여 빈 LinkedHashMap instance 생성합니다.

LinkedHashMap(IntPtr, JniHandleOwnership)

JNI 개체의 관리되는 표현을 만들 때 사용되는 생성자입니다. 런타임에서 호출합니다.

속성

Class

Object의 런타임 클래스를 반환합니다.

(다음에서 상속됨 Object)
Handle

기본 Android instance 대한 핸들입니다.

(다음에서 상속됨 Object)
IsEmpty

추가할 항목

(다음에서 상속됨 AbstractMap)
JniIdentityHashCode

예측 가능한 반복 순서를 사용하여 인터페이스의 Map 해시 테이블 및 연결된 목록 구현입니다.

(다음에서 상속됨 Object)
JniPeerMembers

예측 가능한 반복 순서를 사용하여 인터페이스의 Map 해시 테이블 및 연결된 목록 구현입니다.

PeerReference

예측 가능한 반복 순서를 사용하여 인터페이스의 Map 해시 테이블 및 연결된 목록 구현입니다.

(다음에서 상속됨 Object)
ThresholdClass

이 API는 Android용 Mono 인프라를 지원하며 코드에서 직접 사용할 수 없습니다.

ThresholdType

이 API는 Android용 Mono 인프라를 지원하며 코드에서 직접 사용할 수 없습니다.

메서드

Clear()

추가할 항목

(다음에서 상속됨 AbstractMap)
Clone()

HashMap instance 단순 복사본을 반환합니다. 키와 값 자체는 복제되지 않습니다.

(다음에서 상속됨 HashMap)
Compute(Object, IBiFunction)

예측 가능한 반복 순서를 사용하여 인터페이스의 Map 해시 테이블 및 연결된 목록 구현입니다.

(다음에서 상속됨 HashMap)
ComputeIfAbsent(Object, IFunction)

예측 가능한 반복 순서를 사용하여 인터페이스의 Map 해시 테이블 및 연결된 목록 구현입니다.

(다음에서 상속됨 HashMap)
ComputeIfPresent(Object, IBiFunction)

예측 가능한 반복 순서를 사용하여 인터페이스의 Map 해시 테이블 및 연결된 목록 구현입니다.

(다음에서 상속됨 HashMap)
ContainsKey(Object)

추가할 항목

(다음에서 상속됨 AbstractMap)
ContainsValue(Object)

추가할 항목

(다음에서 상속됨 AbstractMap)
Dispose()

예측 가능한 반복 순서를 사용하여 인터페이스의 Map 해시 테이블 및 연결된 목록 구현입니다.

(다음에서 상속됨 Object)
Dispose(Boolean)

예측 가능한 반복 순서를 사용하여 인터페이스의 Map 해시 테이블 및 연결된 목록 구현입니다.

(다음에서 상속됨 Object)
EntrySet()

Set 이 맵에 포함된 매핑의 보기를 반환합니다.

(다음에서 상속됨 HashMap)
Equals(Object)

다른 개체가 이 개체와 "같음"인지 여부를 나타냅니다.

(다음에서 상속됨 Object)
ForEach(IBiConsumer)

예측 가능한 반복 순서를 사용하여 인터페이스의 Map 해시 테이블 및 연결된 목록 구현입니다.

(다음에서 상속됨 HashMap)
Get(Object)

추가할 항목

(다음에서 상속됨 AbstractMap)
GetHashCode()

개체의 해시 코드 값을 반환합니다.

(다음에서 상속됨 Object)
GetOrDefault(Object, Object)

예측 가능한 반복 순서를 사용하여 인터페이스의 Map 해시 테이블 및 연결된 목록 구현입니다.

(다음에서 상속됨 HashMap)
JavaFinalize()

가비지 수집에서 개체에 대한 참조가 더 이상 없다고 판단할 때 개체의 가비지 수집기에서 호출됩니다.

(다음에서 상속됨 Object)
KeySet()

추가할 항목

(다음에서 상속됨 AbstractMap)
Merge(Object, Object, IBiFunction)

예측 가능한 반복 순서를 사용하여 인터페이스의 Map 해시 테이블 및 연결된 목록 구현입니다.

(다음에서 상속됨 HashMap)
Notify()

이 개체의 모니터에서 대기 중인 단일 스레드를 해제합니다.

(다음에서 상속됨 Object)
NotifyAll()

이 개체의 모니터에서 대기 중인 모든 스레드를 해제합니다.

(다음에서 상속됨 Object)
Put(Object, Object)

추가할 항목

(다음에서 상속됨 AbstractMap)
PutAll(IDictionary)

추가할 항목

(다음에서 상속됨 AbstractMap)
PutIfAbsent(Object, Object)

예측 가능한 반복 순서를 사용하여 인터페이스의 Map 해시 테이블 및 연결된 목록 구현입니다.

(다음에서 상속됨 HashMap)
Remove(Object)

추가할 항목

(다음에서 상속됨 AbstractMap)
Remove(Object, Object)

지정된 키에 대한 매핑을 이 맵에서 제거합니다(있는 경우).

(다음에서 상속됨 HashMap)
RemoveEldestEntry(IMapEntry)

이 맵에서 가장 오래된 항목을 제거해야 하는 경우 를 반환 true 합니다.

Replace(Object, Object)

예측 가능한 반복 순서를 사용하여 인터페이스의 Map 해시 테이블 및 연결된 목록 구현입니다.

(다음에서 상속됨 HashMap)
Replace(Object, Object, Object)

예측 가능한 반복 순서를 사용하여 인터페이스의 Map 해시 테이블 및 연결된 목록 구현입니다.

(다음에서 상속됨 HashMap)
ReplaceAll(IBiFunction)

예측 가능한 반복 순서를 사용하여 인터페이스의 Map 해시 테이블 및 연결된 목록 구현입니다.

(다음에서 상속됨 HashMap)
SetHandle(IntPtr, JniHandleOwnership)

Handle 속성을 설정합니다.

(다음에서 상속됨 Object)
Size()

추가할 항목

(다음에서 상속됨 AbstractMap)
ToArray<T>()

예측 가능한 반복 순서를 사용하여 인터페이스의 Map 해시 테이블 및 연결된 목록 구현입니다.

(다음에서 상속됨 Object)
ToString()

개체의 문자열 표현을 반환합니다.

(다음에서 상속됨 Object)
UnregisterFromRuntime()

예측 가능한 반복 순서를 사용하여 인터페이스의 Map 해시 테이블 및 연결된 목록 구현입니다.

(다음에서 상속됨 Object)
Values()

추가할 항목

(다음에서 상속됨 AbstractMap)
Wait()

현재 스레드가 각성될 때까지 대기하도록 합니다. 일반적으로 <알림을<> 받>거나<<> 중단/em>합니다.

(다음에서 상속됨 Object)
Wait(Int64)

현재 스레드가 깨어날 때까지 대기하게 하며, 일반적으로 <알림을 받<>거나 중단</>em>>을 받거나 <일정량의 실시간이 경과할 때까지 대기합니다.

(다음에서 상속됨 Object)
Wait(Int64, Int32)

현재 스레드가 깨어날 때까지 대기하게 하며, 일반적으로 <알림을 받<>거나 중단</>em>>을 받거나 <일정량의 실시간이 경과할 때까지 대기합니다.

(다음에서 상속됨 Object)

명시적 인터페이스 구현

IJavaPeerable.Disposed()

예측 가능한 반복 순서를 사용하여 인터페이스의 Map 해시 테이블 및 연결된 목록 구현입니다.

(다음에서 상속됨 Object)
IJavaPeerable.DisposeUnlessReferenced()

예측 가능한 반복 순서를 사용하여 인터페이스의 Map 해시 테이블 및 연결된 목록 구현입니다.

(다음에서 상속됨 Object)
IJavaPeerable.Finalized()

예측 가능한 반복 순서를 사용하여 인터페이스의 Map 해시 테이블 및 연결된 목록 구현입니다.

(다음에서 상속됨 Object)
IJavaPeerable.JniManagedPeerState

예측 가능한 반복 순서를 사용하여 인터페이스의 Map 해시 테이블 및 연결된 목록 구현입니다.

(다음에서 상속됨 Object)
IJavaPeerable.SetJniIdentityHashCode(Int32)

예측 가능한 반복 순서를 사용하여 인터페이스의 Map 해시 테이블 및 연결된 목록 구현입니다.

(다음에서 상속됨 Object)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

예측 가능한 반복 순서를 사용하여 인터페이스의 Map 해시 테이블 및 연결된 목록 구현입니다.

(다음에서 상속됨 Object)
IJavaPeerable.SetPeerReference(JniObjectReference)

예측 가능한 반복 순서를 사용하여 인터페이스의 Map 해시 테이블 및 연결된 목록 구현입니다.

(다음에서 상속됨 Object)

확장 메서드

JavaCast<TResult>(IJavaObject)

Android 런타임 확인 형식 변환을 수행합니다.

JavaCast<TResult>(IJavaObject)

예측 가능한 반복 순서를 사용하여 인터페이스의 Map 해시 테이블 및 연결된 목록 구현입니다.

GetJniTypeName(IJavaPeerable)

예측 가능한 반복 순서를 사용하여 인터페이스의 Map 해시 테이블 및 연결된 목록 구현입니다.

적용 대상