最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JAVA 集合框架Map 接口的深度解析與實(shí)戰(zhàn)指南

 更新時(shí)間:2026年04月02日 09:08:12   作者:小林說(shuō)AI  
文章主要介紹了Map接口及其常用實(shí)現(xiàn)類(HashMap、LinkedHashMap、TreeMap)的核心特性、底層原理和適用場(chǎng)景,詳細(xì)講解了HashMap的哈希表結(jié)構(gòu)、鏈表和紅黑樹(shù)處理、線程不安全性及自定義Key注意事項(xiàng),感興趣的朋友跟隨小編一起看看吧

1.1 本章學(xué)習(xí)目標(biāo)與重點(diǎn)

?? 掌握 Map 接口的核心特性,理解 Key-Value 鍵值對(duì)的存儲(chǔ)結(jié)構(gòu)與設(shè)計(jì)思想。
?? 熟練掌握 HashMap、LinkedHashMap、TreeMap 等實(shí)現(xiàn)類的底層原理與適用場(chǎng)景。
?? 理解 Map 集合的線程安全問(wèn)題,掌握并發(fā)環(huán)境下的解決方案。
?? 本章重點(diǎn)是 HashMap 的底層實(shí)現(xiàn)原理不同 Map 實(shí)現(xiàn)類的性能對(duì)比,這是面試和開(kāi)發(fā)中的高頻核心考點(diǎn)。

1.2 Map 接口核心概述

1.2.1 Map 接口的定義與特性

?? Map 是一種鍵值對(duì)(Key-Value) 集合,它的核心是通過(guò)鍵(Key)來(lái)唯一標(biāo)識(shí)值(Value)。
Map 接口中的 Key 具有唯一性,不能重復(fù);Value 可以重復(fù),并且可以為 null。
Map 接口與 Collection 接口是并列關(guān)系,它不屬于 Collection 體系,沒(méi)有繼承關(guān)系。

Map 接口的核心方法:

  • put(K key, V value):添加鍵值對(duì),Key 重復(fù)時(shí)會(huì)覆蓋原有 Value
  • get(Object key):根據(jù) Key 獲取 Value,Key 不存在時(shí)返回 null
  • remove(Object key):根據(jù) Key 刪除對(duì)應(yīng)的鍵值對(duì)
  • containsKey(Object key):判斷是否包含指定 Key
  • containsValue(Object value):判斷是否包含指定 Value
  • keySet():獲取所有 Key 組成的 Set 集合
  • values():獲取所有 Value 組成的 Collection 集合
  • entrySet():獲取所有鍵值對(duì)(Map.Entry)組成的 Set 集合

? 核心結(jié)論:Map 適合通過(guò)唯一標(biāo)識(shí)(Key)快速查找對(duì)應(yīng)數(shù)據(jù)(Value)的場(chǎng)景。

1.2.2 Map 集合的遍歷方式

Map 集合有三種常用的遍歷方式,我們以 HashMap 為例進(jìn)行代碼實(shí)操:

import java.util.HashMap;
import java.util.Map;
import java.util.Set;
public class MapTraversalDemo {
    public static void main(String[] args) {
        Map<String, String> map = new HashMap<>();
        map.put("name", "張三");
        map.put("age", "20");
        map.put("gender", "男");
        // 方式1:遍歷所有Key,通過(guò)Key獲取Value
        System.out.println("方式1:遍歷Key獲取Value");
        Set<String> keySet = map.keySet();
        for (String key : keySet) {
            String value = map.get(key);
            System.out.println(key + "=" + value);
        }
        // 方式2:遍歷所有鍵值對(duì)(Map.Entry)
        System.out.println("\n方式2:遍歷Map.Entry");
        Set<Map.Entry<String, String>> entrySet = map.entrySet();
        for (Map.Entry<String, String> entry : entrySet) {
            System.out.println(entry.getKey() + "=" + entry.getValue());
        }
        // 方式3:JDK8+ Lambda表達(dá)式遍歷
        System.out.println("\n方式3:Lambda表達(dá)式遍歷");
        map.forEach((key, value) -> System.out.println(key + "=" + value));
    }
}

輸出結(jié)果

方式1:遍歷Key獲取Value
name=張三
age=20
gender=男

方式2:遍歷Map.Entry
name=張三
age=20
gender=男

方式3:Lambda表達(dá)式遍歷
name=張三
age=20
gender=男

? 核心結(jié)論:遍歷大量數(shù)據(jù)時(shí),方式2(entrySet)效率最高,因?yàn)樗苊饬送ㄟ^(guò) Key 重復(fù)查詢 Value 的操作。

1.3 HashMap:基于哈希表的實(shí)現(xiàn)

1.3.1 HashMap 底層原理(JDK8)

?? JDK8 中 HashMap 的底層結(jié)構(gòu)是 數(shù)組 + 鏈表 + 紅黑樹(shù) 的組合結(jié)構(gòu),目的是解決哈希沖突,提升查詢效率。

  1. 數(shù)組(哈希桶):數(shù)組的每個(gè)元素是一個(gè)鏈表或紅黑樹(shù)的頭節(jié)點(diǎn),默認(rèn)初始容量為 16,默認(rèn)加載因子為 0.75。
  2. 鏈表:當(dāng)多個(gè) Key 的哈希值相同,且對(duì)應(yīng)數(shù)組下標(biāo)位置已有元素時(shí),會(huì)以鏈表形式存儲(chǔ),稱為哈希沖突。
  3. 紅黑樹(shù):當(dāng)鏈表長(zhǎng)度超過(guò)閾值(默認(rèn)為 8),并且數(shù)組長(zhǎng)度大于等于 64 時(shí),鏈表會(huì)轉(zhuǎn)換為紅黑樹(shù),將查詢時(shí)間復(fù)雜度從 O(n) 降低到 O(log n)。

HashMap 的核心存儲(chǔ)流程:
① ?? 計(jì)算 Key 的哈希值:通過(guò) hash(key) 方法計(jì)算,目的是降低哈希沖突概率。
② ?? 計(jì)算數(shù)組下標(biāo):(數(shù)組長(zhǎng)度 - 1) & 哈希值,等價(jià)于取模運(yùn)算但效率更高。
③ ?? 判斷下標(biāo)位置是否為空:為空則直接插入新節(jié)點(diǎn);不為空則判斷 Key 是否重復(fù)。
④ ?? 處理 Key 重復(fù):Key 重復(fù)則覆蓋 Value;不重復(fù)則插入鏈表或紅黑樹(shù)。
⑤ ?? 擴(kuò)容判斷:當(dāng)元素個(gè)數(shù)超過(guò) 數(shù)組容量 * 加載因子 時(shí),數(shù)組會(huì)擴(kuò)容為原來(lái)的 2 倍。

1.3.2 代碼實(shí)操:HashMap 的常用操作

import java.util.HashMap;
import java.util.Map;
public class HashMapDemo {
    public static void main(String[] args) {
        Map<String, Integer> hashMap = new HashMap<>();
        // 1. 添加鍵值對(duì)
        hashMap.put("語(yǔ)文", 90);
        hashMap.put("數(shù)學(xué)", 95);
        hashMap.put("英語(yǔ)", 92);
        hashMap.put("數(shù)學(xué)", 100); // Key重復(fù),覆蓋原有Value
        System.out.println("HashMap內(nèi)容:" + hashMap);
        // 2. 根據(jù)Key獲取Value
        Integer mathScore = hashMap.get("數(shù)學(xué)");
        System.out.println("數(shù)學(xué)成績(jī):" + mathScore);
        // 3. 判斷是否包含指定Key或Value
        boolean hasEnglish = hashMap.containsKey("英語(yǔ)");
        boolean has90 = hashMap.containsValue(90);
        System.out.println("包含英語(yǔ)Key:" + hasEnglish);
        System.out.println("包含90分Value:" + has90);
        // 4. 刪除鍵值對(duì)
        hashMap.remove("語(yǔ)文");
        System.out.println("刪除語(yǔ)文后的HashMap:" + hashMap);
        // 5. 獲取集合大小
        int size = hashMap.size();
        System.out.println("HashMap大小:" + size);
        // 6. 清空集合
        hashMap.clear();
        System.out.println("清空后是否為空:" + hashMap.isEmpty());
    }
}

輸出結(jié)果

HashMap內(nèi)容:{語(yǔ)文=90, 數(shù)學(xué)=100, 英語(yǔ)=92}
數(shù)學(xué)成績(jī):100
包含英語(yǔ)Key:true
包含90分Value:true
刪除語(yǔ)文后的HashMap:{數(shù)學(xué)=100, 英語(yǔ)=92}
HashMap大?。?
清空后是否為空:true

1.3.3 自定義對(duì)象作為 Key 的注意事項(xiàng)

?? 當(dāng)使用自定義對(duì)象作為 HashMap 的 Key 時(shí),必須重寫(xiě) hashCode()equals() 方法,否則無(wú)法保證 Key 的唯一性。

我們以 Student 類為例,實(shí)現(xiàn)基于學(xué)號(hào)的 Key 唯一性:

import java.util.HashMap;
import java.util.Map;
import java.util.Objects;
class Student {
    private String id;
    private String name;
    public Student(String id, String name) {
        this.id = id;
        this.name = name;
    }
    // 重寫(xiě)equals方法:根據(jù)學(xué)號(hào)判斷Key是否相同
    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Student student = (Student) o;
        return Objects.equals(id, student.id);
    }
    // 重寫(xiě)hashCode方法:根據(jù)學(xué)號(hào)計(jì)算哈希值
    @Override
    public int hashCode() {
        return Objects.hash(id);
    }
    @Override
    public String toString() {
        return "Student{id='" + id + "', name='" + name + "'}";
    }
}
public class HashMapCustomKeyDemo {
    public static void main(String[] args) {
        Map<Student, String> studentMap = new HashMap<>();
        Student s1 = new Student("001", "張三");
        Student s2 = new Student("002", "李四");
        Student s3 = new Student("001", "張三"); // 與s1學(xué)號(hào)相同
        studentMap.put(s1, "一班");
        studentMap.put(s2, "二班");
        studentMap.put(s3, "三班"); // Key重復(fù),覆蓋s1的Value
        // 遍歷輸出
        studentMap.forEach((key, value) -> System.out.println(key + "=" + value));
    }
}

輸出結(jié)果

Student{id='001', name='張三'}=三班
Student{id='002', name='李四'}=二班

1.3.4 HashMap 性能分析

  • 增刪查操作:理想情況下時(shí)間復(fù)雜度為 O(1),哈希沖突嚴(yán)重時(shí)會(huì)退化為 O(n),紅黑樹(shù)轉(zhuǎn)換后為 O(log n)
  • 擴(kuò)容機(jī)制:擴(kuò)容時(shí)需要重新計(jì)算所有元素的下標(biāo),非常消耗性能,開(kāi)發(fā)中建議提前指定初始容量,減少擴(kuò)容次數(shù)。
    ?? 注意事項(xiàng):HashMap 是線程不安全的集合,多線程環(huán)境下使用會(huì)出現(xiàn)數(shù)據(jù)錯(cuò)亂或 ConcurrentModificationException 異常。

1.4 LinkedHashMap:有序的哈希表

1.4.1 LinkedHashMap 底層原理

?? LinkedHashMap 是 HashMap 的子類,底層結(jié)構(gòu)是 HashMap + 雙向鏈表
它通過(guò)雙向鏈表維護(hù)鍵值對(duì)的插入順序訪問(wèn)順序,保證遍歷順序與插入順序一致,或者與最近訪問(wèn)順序一致。
LinkedHashMap 的元素唯一性判斷規(guī)則與 HashMap 完全相同。

1.4.2 代碼實(shí)操1:插入順序模式(默認(rèn))

import java.util.LinkedHashMap;
import java.util.Map;
public class LinkedHashMapInsertOrderDemo {
    public static void main(String[] args) {
        Map<String, String> linkedHashMap = new LinkedHashMap<>();
        linkedHashMap.put("b", "B");
        linkedHashMap.put("a", "A");
        linkedHashMap.put("c", "C");
        // 遍歷順序與插入順序一致
        linkedHashMap.forEach((key, value) -> System.out.println(key + "=" + value));
    }
}

輸出結(jié)果

b=B
a=A
c=C

1.4.3 代碼實(shí)操2:訪問(wèn)順序模式

通過(guò)構(gòu)造方法 LinkedHashMap(int initialCapacity, float loadFactor, boolean accessOrder) 可以開(kāi)啟訪問(wèn)順序模式,最近訪問(wèn)的元素會(huì)被移到鏈表尾部。

import java.util.LinkedHashMap;
import java.util.Map;
public class LinkedHashMapAccessOrderDemo {
    public static void main(String[] args) {
        // 開(kāi)啟訪問(wèn)順序模式:accessOrder = true
        Map<String, String> linkedHashMap = new LinkedHashMap<>(16, 0.75f, true);
        linkedHashMap.put("a", "A");
        linkedHashMap.put("b", "B");
        linkedHashMap.put("c", "C");
        System.out.println("初始順序:");
        linkedHashMap.forEach((key, value) -> System.out.println(key + "=" + value));
        // 訪問(wèn)元素a,觸發(fā)訪問(wèn)順序調(diào)整
        linkedHashMap.get("a");
        System.out.println("\n訪問(wèn)元素a后的順序:");
        linkedHashMap.forEach((key, value) -> System.out.println(key + "=" + value));
    }
}

輸出結(jié)果

初始順序:
a=A
b=B
c=C

訪問(wèn)元素a后的順序:
b=B
c=C
a=A

? 核心結(jié)論:訪問(wèn)順序模式的 LinkedHashMap 可以用來(lái)實(shí)現(xiàn) LRU 緩存淘汰算法(最近最少使用淘汰)。

1.4.4 性能分析

  • LinkedHashMap 的增刪查效率略低于 HashMap,因?yàn)樾枰S護(hù)雙向鏈表的節(jié)點(diǎn)引用。
  • 適合需要有序遍歷高效查找的場(chǎng)景,例如緩存系統(tǒng)、配置參數(shù)存儲(chǔ)等。
    ?? 注意事項(xiàng):LinkedHashMap 同樣是線程不安全的集合。

1.5 TreeMap:基于紅黑樹(shù)的排序映射

1.5.1 TreeMap 底層原理

?? TreeMap 的底層結(jié)構(gòu)是紅黑樹(shù),它會(huì)自動(dòng)對(duì) Key 進(jìn)行排序,默認(rèn)是升序排列。
TreeMap 不允許 Key 為 null,因?yàn)榕判驎r(shí)會(huì)拋出空指針異常。
TreeMap 保證 Key 唯一性的方式是通過(guò)比較 Key 的大小,而不是 hashCode()equals() 方法。

TreeMap 的兩種排序方式:

  1. 自然排序:Key 實(shí)現(xiàn) Comparable 接口,重寫(xiě) compareTo() 方法。
  2. 定制排序:創(chuàng)建 TreeMap 時(shí)傳入 Comparator 比較器,自定義排序規(guī)則。

1.5.2 代碼實(shí)操1:自然排序

import java.util.Map;
import java.util.TreeMap;
public class TreeMapNaturalSortDemo {
    public static void main(String[] args) {
        Map<Integer, String> treeMap = new TreeMap<>();
        treeMap.put(3, "C");
        treeMap.put(1, "A");
        treeMap.put(2, "B");
        // 自動(dòng)按Key升序排列
        treeMap.forEach((key, value) -> System.out.println(key + "=" + value));
    }
}

輸出結(jié)果

1=A
2=B
3=C

1.5.3 代碼實(shí)操2:定制排序

我們對(duì)字符串 Key 進(jìn)行降序排列,通過(guò) Comparator 實(shí)現(xiàn)定制排序:

import java.util.Comparator;
import java.util.Map;
import java.util.TreeMap;
public class TreeMapCustomSortDemo {
    public static void main(String[] args) {
        // 傳入比較器,實(shí)現(xiàn)Key降序排列
        Map<String, Integer> treeMap = new TreeMap<>(new Comparator<String>() {
            @Override
            public int compare(String o1, String o2) {
                return o2.compareTo(o1); // 降序排列
            }
        });
        treeMap.put("Java", 10);
        treeMap.put("Python", 8);
        treeMap.put("Go", 9);
        treeMap.forEach((key, value) -> System.out.println(key + "=" + value));
    }
}

輸出結(jié)果

Python=8
Java=10
Go=9

1.5.4 性能分析

  • 增刪查操作:時(shí)間復(fù)雜度穩(wěn)定為 O(log n),效率低于 HashMap,但支持有序遍歷。
  • 適合需要排序范圍查詢的場(chǎng)景,例如排行榜、字典排序等。
    ?? 注意事項(xiàng):
  1. TreeMap 是線程不安全的集合。
  2. 存儲(chǔ)自定義對(duì)象作為 Key 時(shí),必須指定排序規(guī)則,否則會(huì)拋出 ClassCastException

1.6 Hashtable:線程安全的哈希表

1.6.1 Hashtable 核心特性

?? Hashtable 是 Map 接口的早期實(shí)現(xiàn)類,底層結(jié)構(gòu)是 數(shù)組 + 鏈表(JDK8 沒(méi)有紅黑樹(shù)優(yōu)化)。
它的所有方法都添加了 synchronized 關(guān)鍵字,是線程安全的集合。
Hashtable 不允許 Key 或 Value 為 null,默認(rèn)初始容量為 11,加載因子為 0.75。

1.6.2 性能分析

  • Hashtable 的線程安全是通過(guò)方法加鎖實(shí)現(xiàn)的,鎖粒度大,并發(fā)性能低。
  • 現(xiàn)代開(kāi)發(fā)中,不推薦使用 Hashtable,優(yōu)先使用 ConcurrentHashMap 實(shí)現(xiàn)線程安全。

1.7 ConcurrentHashMap:并發(fā)安全的哈希表

1.7.1 ConcurrentHashMap 核心特性

?? ConcurrentHashMap 是 JUC 包下的線程安全集合,專門用于解決 HashMap 的并發(fā)問(wèn)題。
JDK8 中 ConcurrentHashMap 的底層結(jié)構(gòu)是 數(shù)組 + 鏈表 + 紅黑樹(shù),與 HashMap 類似。
它采用分段鎖CAS + synchronized 的方式實(shí)現(xiàn)線程安全,鎖粒度小,并發(fā)性能遠(yuǎn)高于 Hashtable。
ConcurrentHashMap 支持 Key 和 Value 為 null(與 Hashtable 不同)。

1.7.2 代碼實(shí)操:ConcurrentHashMap 的使用

import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
public class ConcurrentHashMapDemo {
    public static void main(String[] args) {
        Map<String, Integer> concurrentMap = new ConcurrentHashMap<>();
        // 多線程環(huán)境下安全操作
        new Thread(() -> {
            for (int i = 0; i < 1000; i++) {
                concurrentMap.put("thread1_" + i, i);
            }
        }).start();
        new Thread(() -> {
            for (int i = 0; i < 1000; i++) {
                concurrentMap.put("thread2_" + i, i);
            }
        }).start();
        // 等待線程執(zhí)行完成
        try {
            Thread.sleep(1000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println("ConcurrentHashMap大小:" + concurrentMap.size());
    }
}

輸出結(jié)果

ConcurrentHashMap大?。?000

? 核心結(jié)論:多線程環(huán)境下優(yōu)先使用 ConcurrentHashMap,兼顧線程安全和并發(fā)性能。

1.8 實(shí)戰(zhàn)案例:基于 Map 實(shí)現(xiàn) LRU 緩存

1.8.1 需求分析

?? 實(shí)現(xiàn)一個(gè) LRU(最近最少使用)緩存工具類,滿足以下需求:

  1. 緩存容量有限,超出容量時(shí)自動(dòng)淘汰最近最少使用的元素。
  2. 支持緩存的添加、查詢、刪除操作。
  3. 保證操作的時(shí)間復(fù)雜度盡可能低。

1.8.2 實(shí)現(xiàn)思路

利用 LinkedHashMap 的訪問(wèn)順序模式實(shí)現(xiàn) LRU 緩存,重寫(xiě) removeEldestEntry() 方法,自定義淘汰規(guī)則。

1.8.3 代碼實(shí)現(xiàn)

import java.util.LinkedHashMap;
import java.util.Map;
/**
 * 基于LinkedHashMap實(shí)現(xiàn)的LRU緩存
 */
public class LRUCache<K, V> extends LinkedHashMap<K, V> {
    // 緩存最大容量
    private final int maxCapacity;
    // 構(gòu)造方法:開(kāi)啟訪問(wèn)順序模式
    public LRUCache(int maxCapacity) {
        super(16, 0.75f, true);
        this.maxCapacity = maxCapacity;
    }
    /**
     * 重寫(xiě)該方法,自定義淘汰規(guī)則
     * @param eldest 最久未使用的元素
     * @return true表示淘汰該元素,false表示不淘汰
     */
    @Override
    protected boolean removeEldestEntry(Map.Entry<K, V> eldest) {
        // 當(dāng)元素個(gè)數(shù)超過(guò)最大容量時(shí),淘汰最久未使用的元素
        return size() > maxCapacity;
    }
    // 測(cè)試方法
    public static void main(String[] args) {
        LRUCache<String, Integer> cache = new LRUCache<>(3);
        // 添加緩存元素
        cache.put("A", 1);
        cache.put("B", 2);
        cache.put("C", 3);
        System.out.println("初始緩存:" + cache);
        // 訪問(wèn)元素A,調(diào)整訪問(wèn)順序
        cache.get("A");
        System.out.println("訪問(wèn)A后的緩存:" + cache);
        // 添加元素D,超出容量,淘汰最久未使用的B
        cache.put("D", 4);
        System.out.println("添加D后的緩存:" + cache);
    }
}

輸出結(jié)果

初始緩存:{A=1, B=2, C=3}
訪問(wèn)A后的緩存:{B=2, C=3, A=1}
添加D后的緩存:{C=3, A=1, D=4}

1.8.4 案例總結(jié)

? 這個(gè) LRU 緩存工具類充分利用了 LinkedHashMap 的特性,代碼簡(jiǎn)潔且性能高效。
通過(guò)重寫(xiě) removeEldestEntry() 方法,輕松實(shí)現(xiàn)了緩存淘汰規(guī)則,在實(shí)際開(kāi)發(fā)中可直接用于本地緩存場(chǎng)景。

1.9 本章總結(jié)

  1. Map 是鍵值對(duì)集合,Key 唯一,Value 可重復(fù),常用實(shí)現(xiàn)類有 HashMap、LinkedHashMap、TreeMap。
  2. HashMap 底層是數(shù)組+鏈表+紅黑樹(shù),查詢效率高,適合快速查找場(chǎng)景,線程不安全。
  3. LinkedHashMap 基于 HashMap+雙向鏈表,支持插入順序或訪問(wèn)順序遍歷,可實(shí)現(xiàn) LRU 緩存。
  4. TreeMap 底層是紅黑樹(shù),支持 Key 排序,適合有序遍歷和范圍查詢場(chǎng)景,線程不安全。
  5. 多線程環(huán)境下,優(yōu)先使用 ConcurrentHashMap 保證線程安全,避免使用 Hashtable。
  6. 自定義對(duì)象作為 HashMap Key 時(shí),必須重寫(xiě) hashCode()equals() 方法。

到此這篇關(guān)于JAVA 集合框架Map 接口的深度解析與實(shí)戰(zhàn)指南的文章就介紹到這了,更多相關(guān)java map接口內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Maven倉(cāng)庫(kù)的具體使用(本地倉(cāng)庫(kù)+遠(yuǎn)程倉(cāng)庫(kù))

    Maven倉(cāng)庫(kù)的具體使用(本地倉(cāng)庫(kù)+遠(yuǎn)程倉(cāng)庫(kù))

    Maven 在某個(gè)統(tǒng)一的位置存儲(chǔ)所有項(xiàng)目的構(gòu)件,這個(gè)統(tǒng)一的位置,我們就稱之為倉(cāng)庫(kù),本文主要介紹了Maven倉(cāng)庫(kù)的具體使用(本地倉(cāng)庫(kù)+遠(yuǎn)程倉(cāng)庫(kù)),感興趣的可以了解一下
    2023-11-11
  • Java枚舉通過(guò)Code獲取相應(yīng)的Value值實(shí)現(xiàn)方式

    Java枚舉通過(guò)Code獲取相應(yīng)的Value值實(shí)現(xiàn)方式

    本文介紹了枚舉定義、如何通過(guò)code獲取value的方法,并提供了一個(gè)完整的代碼示例,通過(guò)實(shí)際測(cè)試,證明了該方法的有效性,希望本文能夠?yàn)樽x者提供參考,并鼓勵(lì)大家支持腳本之家
    2026-03-03
  • Java調(diào)用ChatGPT API并實(shí)現(xiàn)流式接收方式(Server-Sent Events,SSE)

    Java調(diào)用ChatGPT API并實(shí)現(xiàn)流式接收方式(Server-Sent Events,SSE)

    文章介紹如何在Java中通過(guò)OkHttp和SSE技術(shù)實(shí)現(xiàn)流式獲取ChatGPT響應(yīng),解決傳統(tǒng)HTTP阻塞問(wèn)題,提升用戶體驗(yàn),需配置stream參數(shù),利用SseEmitter封裝后端推送,前端使用EventSourcePolyfill插件處理Token,同時(shí)注意資源管理和避免換行符干擾
    2025-08-08
  • java利用CompletionService保證任務(wù)先完成先獲取到執(zhí)行結(jié)果

    java利用CompletionService保證任務(wù)先完成先獲取到執(zhí)行結(jié)果

    這篇文章主要為大家詳細(xì)介紹了java如何利用CompletionService來(lái)保證任務(wù)先完成先獲取到執(zhí)行結(jié)果,文中的示例代碼講解詳細(xì),需要的可以參考下
    2023-08-08
  • Java8實(shí)現(xiàn)Stream流的合并的方法展示

    Java8實(shí)現(xiàn)Stream流的合并的方法展示

    本文介紹了Java8中Stream流的合并方法,包括concat()、flatMap()和reduce()三種方法。其中,concat()方法可以將兩個(gè)Stream流合并成一個(gè),flatMap()方法可以將一個(gè)Stream流中的元素映射成多個(gè)Stream流并合并成一個(gè),reduce()方法可以將Stream流中的元素逐個(gè)合并成一個(gè)結(jié)果
    2023-05-05
  • java同步器AQS架構(gòu)AbstractQueuedSynchronizer原理解析

    java同步器AQS架構(gòu)AbstractQueuedSynchronizer原理解析

    這篇文章主要為大家介紹了java同步器AQS架構(gòu)AbstractQueuedSynchronizer的底層原理及源碼解析,有需要的朋友可以借鑒參考下,希望能有所幫助,祝大家多多進(jìn)步早日升職加薪
    2022-03-03
  • 如何解決executors線程池創(chuàng)建的線程不釋放的問(wèn)題

    如何解決executors線程池創(chuàng)建的線程不釋放的問(wèn)題

    這篇文章主要介紹了如何解決executors線程池創(chuàng)建的線程不釋放的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • Java內(nèi)存映射 大文件輕松處理

    Java內(nèi)存映射 大文件輕松處理

    這篇文章主要介紹了Java內(nèi)存映射 大文件輕松處理,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-08-08
  • 字符編碼的處理和BeanUtils組件使用詳解

    字符編碼的處理和BeanUtils組件使用詳解

    這篇文章主要為大家介紹了字符編碼的處理和BeanUtils組件的使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-09-09
  • SpringBoot3集成SpringSecurity+JWT的實(shí)現(xiàn)

    SpringBoot3集成SpringSecurity+JWT的實(shí)現(xiàn)

    本文詳解SpringBoot3整合SpringSecurity與JWT實(shí)現(xiàn)認(rèn)證授權(quán),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2025-07-07

最新評(píng)論

九江县| 胶州市| 循化| 青川县| 周宁县| 赤水市| 广平县| 淄博市| 锡林郭勒盟| 阜平县| 昭苏县| 聂拉木县| 明光市| 武穴市| 当涂县| 拜泉县| 张家口市| 浏阳市| 包头市| 恩平市| 神木县| 安岳县| 南靖县| 漾濞| 武清区| 彰武县| 凤阳县| 大洼县| 顺义区| 通道| 岳普湖县| 裕民县| 台州市| 娄烦县| 瑞昌市| 称多县| 苏州市| 阿图什市| 乐业县| 温泉县| 庆云县|