Map in Java 컬렉션의 샘플 코드에 대한 자세한 설명
위 그림과 같이:
(1) Map은 매핑 인터페이스 이고 Map에 저장된 콘텐츠는 키-값 쌍(key-value)
입니다( 2) AbstractMap은 Map에서 을 상속받은 추상 클래스로 Map의 API 대부분을 구현합니다.
(3) SortedMap은 Map에서 상속된 인터페이스입니다. SortedMap의 콘텐츠는 정렬된 키-값 쌍이며 정렬 방법은 비교기를 통해 이루어집니다.
(4) NavigableMap은 "특정 객체 보다 크거나 같은 키-값 쌍 가져오기" 등과 같은 일련의 탐색 메서드가 있는 SortedMap에서 상속됩니다.
(5 ) TreeMap은 AbstractMap 및 NavigableMap 인터페이스에서 상속되므로 TreeMap의 콘텐츠는 순서가 지정된 키-값 쌍입니다.
(6) HashMap은 AbstractMap을 상속하고 내용도 키-값 쌍이지만 순서는 보장되지 않습니다.
(7) WeakHashMap은 AbstractMap을 상속하며, 키 유형이 HashMap과 다릅니다. WeakHashMap은 약한 키입니다.
(8) HashTable은 Directionary를 상속하고 Map도 구현하므로 키-값 쌍이지만 순서가 보장되지 않으며 스레드로부터 안전합니다.
요약:
HashMap은 "zipper 방식"을 기반으로 하는 해시 테이블입니다. 일반적으로 단일 스레드에서 사용됩니다. 키 값은 비어 있을 수 있으며 Iterator(iterator)를 지원합니다. ) 순회
Hashtable은 "zipper 방식"을 기반으로 구현된 해시 테이블이며 스레드로부터 안전하며 멀티 스레드 프로그램에서 사용할 수 있습니다. Iterator 순회와 열거라는 두 가지 순회 방법을 지원합니다.
WeakHashMap도 "zipper 방식" 기반의 해시 테이블이자 약한 키입니다.
TreeMap은 레드-블랙 트리를 통해 구현된 정렬된 해시 테이블이며, 키 값은 비워 둘 수 없습니다.
Java8 지도 인터페이스 소스 코드:
<p>public interface Map<K,V> {<br> int size();//数目<br> boolean isEmpty();//判断是否为空<br> boolean containsKey(<a href="http://www.php.cn/wiki/60.html" target="_blank">Object</a> key);//判断是否含有某个key<br> boolean containsValue(Object value);//判断是否含有某个值<br> V get(Object key);//通过key获得value<br> V put(K key, V value);//插入键值对<br> V remove(Object key);//通过key<a href="http://www.php.cn/php/php-tp-remove.html" target="_blank">删除</a><br> void put<a href="http://www.php.cn/wiki/1483.html" target="_blank">All</a>(Map<? <a href="http://www.php.cn/wiki/166.html" target="_blank">extends</a> K, ? extends V> m);//将一个Map插入<br> void <a href="http://www.php.cn/wiki/917.html" target="_blank">clear</a>();//清空<br> <a href="http://www.php.cn/code/8209.html" target="_blank">Set</a><K> keySet();//返回key集合<br> Collection<V> values();//返回value<br> Set<Map.Entry<K, V>> entrySet();//实体集合,Map的改变会影响到它<br> interface Entry<K,V> {<br> K getKey();//获得key<br> V getValue();//获得value<br> V setValue(V value);//设置值<br> boolean equals(Object o);//判断对象是否相等<br> int hashCode();//返回hashCode<br> //比较器,比较两个key<br> public <a href="http://www.php.cn/wiki/188.html" target="_blank">static</a> <K extends Comparable<? <a href="http://www.php.cn/code/8202.html" target="_blank">super</a> K>, V> Comparator<Map.Entry<K,V>> comparingByKey() {<br> <a href="http://www.php.cn/wiki/135.html" target="_blank">return</a> (Comparator<Map.Entry<K, V>> & Serializable)<br> (c1, c2) -> c1.getKey().compareTo(c2.getKey());<br> }<br> //比较两个值<br> public static <K, V extends Comparable<? super V>> Comparator<Map.Entry<K,V>> comparingByValue() {<br> return (Comparator<Map.Entry<K, V>> & Serializable)<br> (c1, c2) -> c1.getValue().compareTo(c2.getValue());<br> }<br> //比较两个key<br> public static <K, V> Comparator<Map.Entry<K, V>> comparingByKey(Comparator<? super K> cmp) {<br> Objects.<a href="http://www.php.cn/wiki/136.html" target="_blank">require</a>Non<a href="http://www.php.cn/wiki/62.html" target="_blank">Null</a>(cmp);<br> return (Comparator<Map.Entry<K, V>> & Serializable)<br> (c1, c2) -> cmp.compare(c1.getKey(), c2.getKey());<br> }<br> //比较两个值<br> public static <K, V> Comparator<Map.Entry<K, V>> comparingByValue(Comparator<? super V> cmp) {<br> Objects.requireNonNull(cmp);<br> return (Comparator<Map.Entry<K, V>> & Serializable)<br> (c1, c2) -> cmp.compare(c1.getValue(), c2.getValue());<br> }<br> }<br> //比较map是否相等<br> boolean equals(Object o);<br> int hashCode();//hashCode<br> default V get<a href="http://www.php.cn/wiki/1360.html" target="_blank">OrD</a>efault(Object key, V defaultValue) {<br> V v;<br> return (((v = get(key)) != null) || containsKey(key))<br> ? v<br> : defaultValue;<br> }<br> default void <a href="http://www.php.cn/wiki/127.html" target="_blank">forEach</a>(BiConsumer<? super K, ? super V> <a href="http://www.php.cn/java/java-Action.html" target="_blank">action</a>) {<br> Objects.requireNonNull(action);<br> for (Map.Entry<K, V> entry : entrySet()) {<br> K k;<br> V v;<br> try {<br> k = entry.getKey();<br> v = entry.getValue();<br> } catch(IllegalState<a href="http://www.php.cn/wiki/265.html" target="_blank">Exception</a> ise) {<br> // this usually means the entry is no longer in the map.<br> throw <a href="http://www.php.cn/wiki/165.html" target="_blank">new</a> Con<a href="http://www.php.cn/wiki/1046.html" target="_blank">current</a>Mod<a href="http://www.php.cn/wiki/109.html" target="_blank">if</a>icationException(ise);<br> }<br> action.accept(k, v);<br> }<br> }<br> default void replaceAll(BiFunction<? super K, ? super V, ? extends V> function) {<br> Objects.requireNonNull(function);<br> for (Map.Entry<K, V> entry : entrySet()) {<br> K k;<br> V v;<br> try {<br> k = entry.getKey();<br> v = entry.getValue();<br> } catch(IllegalStateException ise) {<br> // this usually means the entry is no longer in the map.<br> throw new ConcurrentModificationException(ise);<br> }<br><br> // ise thrown from function is not a cme.<br> v = function.apply(k, v);<br><br> try {<br> entry.setValue(v);<br> } catch(IllegalStateException ise) {<br> // this usually means the entry is no longer in the map.<br> throw new ConcurrentModificationException(ise);<br> }<br> }<br> }<br> default V putIfAbsent(K key, V value) {<br> V v = get(key);<br> if (v == null) {<br> v = put(key, value);<br> }<br><br> return v;<br> }<br> //删除某个key和value对应的对象<br> default boolean remove(Object key, Object value) {<br> Object curValue = get(key);<br> if (!Objects.equals(curValue, value) ||<br> (curValue == null && !containsKey(key))) {<br> return false;<br> }<br> remove(key);<br> return true;<br> }<br> //将某个key和oldValue对应的值替换为newValue<br> default boolean replace(K key, V oldValue, V newValue) {<br> Object curValue = get(key);<br> if (!Objects.equals(curValue, oldValue) ||<br> (curValue == null && !containsKey(key))) {<br> return false;<br> }<br> put(key, newValue);<br> return true;<br> }<br> //替换key的值<br> default V replace(K key, V value) {<br> V curValue;<br> if (((curValue = get(key)) != null) || containsKey(key)) {<br> curValue = put(key, value);<br> }<br> return curValue;<br> }<br> default V computeIfAbsent(K key,<br> Function<? super K, ? extends V> mappingFunction) {<br> Objects.requireNonNull(mappingFunction);<br> V v;<br> if ((v = get(key)) == null) {<br> V newValue;<br> if ((newValue = mappingFunction.apply(key)) != null) {<br> put(key, newValue);<br> return newValue;<br> }<br> }<br><br> return v;<br> }<br> default V computeIfPresent(K key,<br> BiFunction<? super K, ? super V, ? extends V> remappingFunction) {<br> Objects.requireNonNull(remappingFunction);<br> V oldValue;<br> if ((oldValue = get(key)) != null) {<br> V newValue = remappingFunction.apply(key, oldValue);<br> if (newValue != null) {<br> put(key, newValue);<br> return newValue;<br> } <a href="http://www.php.cn/wiki/111.html" target="_blank">else</a> {<br> remove(key);<br> return null;<br> }<br> } else {<br> return null;<br> }<br> }<br> default V compute(K key,<br> BiFunction<? super K, ? super V, ? extends V> remappingFunction) {<br> Objects.requireNonNull(remappingFunction);<br> V oldValue = get(key);<br><br> V newValue = remappingFunction.apply(key, oldValue);<br> if (newValue == null) {<br> // <a href="http://www.php.cn/wiki/1298.html" target="_blank">delete</a> mapping<br> if (oldValue != null || containsKey(key)) {<br> // something to remove<br> remove(key);<br> return null;<br> } else {<br> // nothing to do. Leave things as they were.<br> return null;<br> }<br> } else {<br> // add or replace old mapping<br> put(key, newValue);<br> return newValue;<br> }<br> }<br> default V merge(K key, V value,<br> BiFunction<? super V, ? super V, ? extends V> remappingFunction) {<br> Objects.requireNonNull(remappingFunction);<br> Objects.requireNonNull(value);<br> V oldValue = get(key);<br> V newValue = (oldValue == null) ? value :<br> remappingFunction.apply(oldValue, value);<br> if(newValue == null) {<br> remove(key);<br> } else {<br> put(key, newValue);<br> }<br> return newValue;<br> }<br>}<br></p>
위 내용은 Map in Java 컬렉션의 샘플 코드에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

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

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

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

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

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

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

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

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

뜨거운 주제











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

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

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

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

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

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

Java는 초보자와 숙련된 개발자 모두가 배울 수 있는 인기 있는 프로그래밍 언어입니다. 이 튜토리얼은 기본 개념부터 시작하여 고급 주제를 통해 진행됩니다. Java Development Kit를 설치한 후 간단한 "Hello, World!" 프로그램을 작성하여 프로그래밍을 연습할 수 있습니다. 코드를 이해한 후 명령 프롬프트를 사용하여 프로그램을 컴파일하고 실행하면 "Hello, World!"가 콘솔에 출력됩니다. Java를 배우면 프로그래밍 여정이 시작되고, 숙달이 깊어짐에 따라 더 복잡한 애플리케이션을 만들 수 있습니다.
