動態

詳情 返回 返回

Python/JS/Go/Java同步學習(第二十九篇)四語言“集合創建“對照表

🤝 免罵聲明:
  • 本文集合創建操作經本蜀黎實戰整理,旨在提供快速參考指南📝
  • 因各語言版本迭代及不同系統環境差異,偶爾可能出現整理不全面之處,實屬正常✅
  • 理性討論歡迎,無憑據攻擊將依據平台規則處理,並可能觸發內容自動備份傳播機制🙏!
  • 若遇具體問題,請帶圖評論區留言,本蜀黎必拔碼相助🤝
    在這裏插入圖片描述

※ 温馨提示

  • 若本內容不慎觸及某些利益,請理性溝通,但刪稿免談,內容去留僅由平台規則決定。
  • 若是學生/自學黨,歡迎白嫖,記得轉發給和你一樣在這條路上同行的夥伴——🔁
  • 知識不該被壟斷,而該成為照亮彼此前行的燈。
🌿【虎山CTO·藥材使用警示】
  • 🍀是藥三分毒,代碼亦如方!
  • ❌文中所涉藥材均為技術隱喻,嚴禁實際配伍使用。
  • 🙏真實用藥請遵醫囑,亂用者——
  • 系統崩壞事小,氣血逆流事大!⚠️
📚 系列文章預告:
  • 近期內容將聚焦編程基礎構建,以「原創知識矩陣」形式系統梳理核心概念。每篇如連續劇集般環環相扣,建議按順序學習——知識點一鍋端,療效更持久!🔥

🧙‍♂️【場景還原:集合創建特訓】

⚡ 雷影老闆(一拳砸碎鍵盤):
  • 「🏆今天學集合創建——可變集合如調兵符,不可變集合如生死簿!學不會的,通宵手寫《哈希表封印術》1000遍!」
🦊 鳴人(對着藥材配伍表抓狂):
  • 「伊魯卡老師!為什麼Python用{}創建集合,Java要new HashSet()?Go還要用map模擬?我的藥方要亂套了!😫」
👨‍🏫 伊魯卡(粉筆頭精準命中後腦):
  • 「鳴人!集合操作如佈陣——🧬
  • {}=快速結印,set()=精細施法,frozenset()=永久封印🥓
  • 亂用可變集合=陣法失控,君臣錯位!🌿」
🐯 卡卡西(從《親熱天堂》後抬眼):
  • 「🎰嘖...連基礎集合都不會創建,以後怎麼學影分身·緩存去重之術?」

🧘【扎馬步·集合創建心法】

📚 三大創建方式如陣法根基:
  • 字面量創建 → 快速結印({}/Set())🥇
  • 構造函數創建 → 精細施法(set()/new HashSet())🥈
  • 不可變集合 → 永久封印(frozenset()/unmodifiableSet())🥉
🔍 創建要訣如陣法禁忌:
  • 判空宜謹慎 → 佈陣先清場地(防雜質入侵)🍒
  • 順序不可靠 → 陣法變化無常(防順序依賴)🩸
  • 類型需統一 → 兵種整齊劃一(防類型混亂)🧬
🌿 虎山CTO心法要訣:
  • 快速結印:{}最便捷,但要注意空集合陷阱🥇
  • 精細施法:set()最靈活,可轉化各種迭代器🥈
  • 永久封印:frozenset()最安全,防篡改如鐵壁🥉
🐍【Python篇·藥方快速佈陣法】
# 快速結印 → 藥方即時佈陣
消化藥 = {"焦山楂","焦神曲","焦麥芽"}  # 焦三仙陣法

# 精細施法 → 藥材精細調配
字符集 = set("鮮山楂")  # 拆字佈陣
數字集 = set([1.333, 2.222, 1.555])  # 數列轉化

# 永久封印 → 禁忌藥方鎖定
死亡筆記 = frozenset(["砒霜","斷腸草"])  # 不可修改的禁忌集
💣【JavaScript篇·丹爐即時結陣術】
// 快速結印 → 丹爐即時結陣
const 消化藥 = new Set(["焦山楂","焦神曲","焦麥芽"]);

// 精細施法 → 丹藥成分解析  
const 字符集 = new Set("鮮山楂");
const 數字集 = new Set([1.333, 2.222, 1.555]);

// 永久封印 → 丹方傳承鎖定(手動實現)
const 死亡筆記 = Object.freeze(new Set(["砒霜","斷腸草"]));
⚡【Go篇·倉儲貨架佈陣術】
// 快速結印 → 貨架即時分類
消化藥 := map[string]bool{"焦山楂":true, "焦神曲":true, "焦麥芽":true}

// 精細施法 → 商品編碼解析
字符集 := make(map[rune]bool)
for _, c := range "鮮山楂" {
    字符集[c] = true
}

// 永久封印 → 危險品區鎖定(返回只讀map)
func 獲取禁忌集() map[string]bool {
    return map[string]bool{"砒霜":true, "斷腸草":true}
}
☕【Java篇·ERP權限佈陣術】
// 快速結印 → 權限即時分配
Set<String> 消化藥 = new HashSet<>(Arrays.asList("焦山楂","焦神曲","焦麥芽"));

// 精細施法 → 用户權限解析
Set<Character> 字符集 = new HashSet<>();
for (char c : "鮮山楂".toCharArray()) {
    字符集.add(c);
}

// 永久封印 → 系統權限鎖定
Set<String> 死亡筆記 = Collections.unmodifiableSet(
    new HashSet<>(Arrays.asList("砒霜","斷腸草"))
);
操作類型 Python JavaScript Go Java
字面量創建 {1,2,3} new Set([1,2,3]) map[T]bool{1:true} Set.of(1,2,3)
構造函數創建 set(iterable) new Set(iterable) make(map[T]bool) new HashSet<>(coll)
空集合創建 set() new Set() make(map[T]bool) new HashSet<>()
不可變集合 frozenset() Object.freeze(new Set()) 返回只讀map Collections.unmodifiableSet()
字符拆解 set("abc") new Set("abc") 遍歷字符串 遍歷char數組
特點説明 內置支持,語法簡潔 原生Set對象,API豐富 用map模擬,需手動管理 類型安全,功能完善

⚠️【避坑指南·創建界的"陣法反噬"】

🐍 Python:空集合的陷阱
# 💥 錯誤:空大括號創建的是字典,不是集合
空集合 = {}  # 這是字典!
print(type(空集合))  # <class 'dict'>

# ✅ 正確:用set()創建空集合
空集合 = set()
print(type(空集合))  # <class 'set'>
💣 JavaScript:Set的數組轉換
// 💥 注意:Set構造參數是數組,不是多個參數
const 錯誤創建 = new Set("焦山楂", "焦神曲");  // 錯誤!只取第一個參數
const 正確創建 = new Set(["焦山楂", "焦神曲"]);  // 正確!傳入數組
⚡ Go:map模擬的侷限性
// 💥 Go沒有內置集合,用map模擬有些不便
集合 := map[string]bool{"A": true, "B": true}

// ✅ 需要輔助函數來獲取鍵列表
func 獲取集合元素(集合 map[string]bool) []string {
    元素 := make([]string, 0, len(集合))
    for k := range 集合 {
        元素 = append(元素, k)
    }
    return 元素
}
☕ Java:不可變集合的注意事項
// 💥 注意:unmodifiableSet是視圖,原集合修改會影響它
Set<String> 原集合 = new HashSet<>(Arrays.asList("A", "B"));
Set<String> 不可變集合 = Collections.unmodifiableSet(原集合);
原集合.add("C");  // 💥 不可變集合也會被修改!

// ✅ 正確:先複製再創建不可變集合
Set<String> 不可變集合 = Collections.unmodifiableSet(
    new HashSet<>(Arrays.asList("A", "B"))  // 創建新集合
);
以下是本蜀黎整理源碼和截圖⏬
1.Python源碼
# ==================== 財務集合模塊 ====================
# 可變科目集:資產負債表的動態黑名單 📜
# 初始化空集合:財務部的空白逮捕令 🚨
# 凍結科目集:税務局的不可撼動聖旨 🏛️
# ⚠️ERP_冷溪虎山:篡改凍結集觸發審計核彈

print("⚖️⚖️⚖️⚖️⚖️⚖️以下是大括號{}創建集合")
hdj = {"焦山楂","焦神曲","焦麥芽"} #消化藥 焦三仙 字符集合 隨機順序
number = {3,6,5,4,2,1}  #自動排序
print(hdj)
print(number)

print("\n","⚖️⚖️⚖️⚖️⚖️⚖️以下是set()創建集合")
maybush_set = set("鮮山楂")  #隨機順序
number_set = set([1.333,2.222,1.555,1.777,1.111]) #{1.333, 2.222, 1.777, 1.111, 1.555}
print(maybush_set)
print(number_set)

print("\n","⚖️⚖️⚖️⚖️⚖️⚖️以下是生成不可變集合")
print(frozenset()) #生成空不可變集合
print(frozenset("number")) #隨機順序
print(frozenset(range(10))) #數字序列

在這裏插入圖片描述

2.Nodejs源碼
// ==================== 中藥集合模塊 ====================
// 可變配伍組:君臣佐使的動態調兵符 🪄
// 空藥方集合:太上老君的空白丹書 📄
// 凍結禁忌集:女媧石上刻的生死簿 ☠️
// ⚠️虎山老藥師:修改禁忌集會引天劫

console.log("⚖️⚖️⚖️⚖️⚖️⚖️ 以下是大括號{}創建集合");
// JavaScript沒有真正的集合類型,使用Set對象
const hdj = new Set(["焦山楂", "焦神曲", "焦麥芽"]); // 消化藥 焦三仙 字符集合 順序不保證
const number = new Set([3, 6, 5, 4, 2, 1]); // 自動排序(數字會按升序排列)
console.log([...hdj]); // 轉換為數組打印
console.log([...number]); // 轉換為數組打印

console.log("\n","⚖️⚖️⚖️⚖️⚖️⚖️ 以下是Set()創建集合");
const maybushSet = new Set("鮮山楂"); // 隨機順序
const numberSet = new Set([1.333, 2.222, 1.555, 1.777, 1.111]); // 順序不保證
console.log([...maybushSet]);
console.log([...numberSet]);

console.log("\n","⚖️⚖️⚖️⚖️⚖️⚖️ 以下是生成不可變集合");
// JavaScript沒有內置的不可變集合,可以使用Object.freeze或自定義實現
console.log(new Set()); // 空集合
console.log(new Set("number")); // 隨機順序
console.log(new Set([...Array(10).keys()])); // 數字序列 0-9
 

在這裏插入圖片描述

3.Go源碼
package main

import (
    "fmt"
    "sort"
)

// ==================== 倉儲集合模塊 ====================
// 可變貨品組:智能貨架的動態屏蔽名單 📵
// 空集合初始化:倉庫貓的空白逮捕令 🐾
// 凍結區位集:建築圖紙的鋼印座標 🏗️
// ⚠️冷溪物流:改動凍結集會導致貨架塌方

func main() {
    fmt.Println("⚖️⚖️⚖️⚖️⚖️⚖️以下是大括號{}創建集合")
    // Go沒有內置的集合類型,使用map來模擬
    hdj := map[string]bool{"焦山楂": true, "焦神曲": true, "焦麥芽": true}                // 消化藥 焦三仙 字符集合 順序不保證
    number := map[int]bool{3: true, 6: true, 5: true, 4: true, 2: true, 1: true} // 順序不保證
    fmt.Println(hdj)                                                             // 手動打印,因為map無序
    fmt.Println(number)                                                          // 手動打印,因為map無序

    fmt.Println("\n", "⚖️⚖️⚖️⚖️⚖️⚖️以下是set()創建集合")
    maybushSet := make(map[rune]bool)
    for _, c := range "鮮山楂" {
        maybushSet[c] = true
    } // 隨機順序
    numberSet := make(map[float64]bool)
    numbers := []float64{1.333, 2.222, 1.555, 1.777, 1.111}
    for _, num := range numbers {
        numberSet[num] = true
    } // 順序不保證
    fmt.Println("鮮山楂的字符:", getKeys(maybushSet))
    fmt.Println("數字集合:", getKeysSorted(numberSet))

    fmt.Println("\n", "⚖️⚖️⚖️⚖️⚖️⚖️以下是生成不可變集合")
    // Go沒有內置的不可變集合,可以返回不可修改的map或使用自定義類型
    emptySet := make(map[interface{}]bool)
    fmt.Println("空集合")
    fmt.Println("number的字符:", emptySet) // 實際上應該返回一個不可變的集合,這裏簡化處理
    numberRange := make(map[int]bool)
    for i := 0; i < 10; i++ {
        numberRange[i] = true
    }
    fmt.Println("數字序列 0-9:", getKeysSortedInt(numberRange))
}

// 輔助函數:獲取map的鍵
func getKeys(m map[rune]bool) []rune {
    keys := make([]rune, 0, len(m))
    for k := range m {
        keys = append(keys, k)
    }
    return keys
}

// 輔助函數:獲取map的鍵並排序
func getKeysSorted(m map[float64]bool) []float64 {
    keys := make([]float64, 0, len(m))
    for k := range m {
        keys = append(keys, k)
    }
    sort.Float64s(keys)
    return keys
}

// 輔助函數:獲取map的鍵並排序(整數)
func getKeysSortedInt(m map[int]bool) []int {
    keys := make([]int, 0, len(m))
    for k := range m {
        keys = append(keys, k)
    }
    sort.Ints(keys)
    return keys
}

在這裏插入圖片描述

4.Java源碼
import java.util.*;

// ==================== ERP集合模塊 ====================
// 可變權限組:系統的動態防火牆 🔥
// 空集合創建:DBA的格式化聖旨 📑
// 凍結配置集:刻在BIOS裏的摩西十誡 ✝️
// ⚠️ERP老兵_冷溪虎山:修改凍結集等於自盡

class main29 {
    public static void main(String[] args) {
        System.out.println("⚖️⚖️⚖️⚖️⚖️⚖️以下是大括號{}創建集合");
        // Java使用Set接口的實現類,如HashSet
        Set<String> hdj = new HashSet<>(Arrays.asList("焦山楂", "焦神曲", "焦麥芽")); // 消化藥 焦三仙 字符集合 順序不保證
        Set<Integer> number = new TreeSet<>(Arrays.asList(3, 6, 5, 4, 2, 1)); // TreeSet會自動排序
        System.out.println(hdj);
        System.out.println(number);

        System.out.println("\n⚖️⚖️⚖️⚖️⚖️⚖️以下是Set()創建集合");
        Set<Character> maybushSet = new HashSet<>();
        for (char c : "鮮山楂".toCharArray()) {
            maybushSet.add(c);
        } // 隨機順序
        Set<Double> numberSet = new HashSet<>(Arrays.asList(1.333, 2.222, 1.555, 1.777, 1.111)); // 順序不保證
        System.out.println(maybushSet);
        System.out.println(numberSet);

        System.out.println("\n⚖️⚖️⚖️⚖️⚖️⚖️以下是生成不可變集合");
        // Java使用Collections.unmodifiableSet創建不可變集合
        System.out.println(Collections.unmodifiableSet(new HashSet<>())); // 空集合
        System.out.println(Collections.unmodifiableSet(new HashSet<>(Arrays.asList('n', 'u', 'm', 'b', 'e', 'r')))); // 隨機順序
        Set<Integer> numberRange = new HashSet<>();
        for (int i = 0; i < 10; i++) {
            numberRange.add(i);
        }
        System.out.println(Collections.unmodifiableSet(numberRange)); // 數字序列 0-9
    }
}

在這裏插入圖片描述

源碼分享結束⏫

📜【結局:全員陣法初成】

⚡ 雷影老闆(看着整齊的集合創建瞳孔地震):
  • 「🏆這基礎打得比我的雷遁·麒麟還穩!但必須掌握四語言創建差異,否則獎金扣去優化系統架構!」
🌸 雛田(小聲提醒鳴人):
  • 「鳴人...Java的Collections.unmodifiableSet()是防禦性拷貝...就像給陣法加結界...🔒」
🦊 鳴人(舉着拉麪碗歡呼):
  • 「哈哈哈!原來frozenset()就是給禁忌藥方上鎖!佐助——來比誰先創建100個不重樣集合!🍜」
🐯 卡卡西(合上《親熱天堂》):
  • 「嗯...總算有點忍者的樣子了。下次教你們用集合實現通靈術·數據去重...🎯」
💥 佐助(寫輪眼微閃):
  • 「哼...吊車尾的,等你能用Go實現線程安全集合再説吧。」
🧪【四語言集合創建心法口訣】
Python:
  • {}快速結印,set()精細施法,frozenset()永久封印🏆
JavaScript:
  • new Set()丹爐結陣,Object.freeze()天道封印,數組參數要牢記🥇
Go:
  • map模擬佈陣,手動管理鍵值,只讀返回防篡改🥈
Java:
  • HashSet權限分配,TreeSet自動排序,unmodifiableSet系統鎖定🥉
🔥 記憶口訣:
  • 創建集合如佈陣,快速精細兩相宜🥇
  • 可變不可變,安全效率要權衡🥈
  • 四法通曉陣法成,數據去重如反掌!🥉

🔖虎山CTO三道護體符

因果符:
  • 🚀我每被惡意舉報一次,就加更一篇乾貨——感謝黑粉為我提供創作燃料。
鏡像符:
  • 📌若遭攻擊(檢測到行業焦慮值上升),建議某些機構停止這種“DDoS攻擊”,將資源用於提升自身課程服務的“帶寬”與“質量”。
重生符:
  • 💪本人是經歷過生死重啓的野生程序猿,系統兼容性極強——你們那點小打小鬧,連個 warning 都觸發不了。

⚠️ 免責聲明(附因果律警告)

本代碼已注入中醫玄學能量,請謹慎使用:

  • ✅ 允許白嫖,但白嫖不點贊可能導致:

    • 下次面試官恰好問到這個算法
    • 鍵盤自動打出//這裏感謝冷溪虎山CTO
    • 奶茶精準灑在剛寫好的代碼上
  • ✅ 允許商用轉發,但商用不註明出處可能觸發:

    • 系統類型混亂自動轉型
    • 數據庫莫名存儲"君臣佐使"字段
  • ✅ 允許吐槽,但吐槽不帶改進建議可能引發:

    • 終生與老闆N連鞭相愛相殺

🚀 現在立即行動:

  1. 點贊 → 吸收本篇算法精華+怪蜀黎腦洞思維
  2. 收藏 → 避免日後求醫無門
  3. 關注 → 接收更多「中醫+代碼」腦洞
  4. 評論區留言 → 領取你的專屬「算法藥方」

⚠️ 友情提示:

  • 本文內容過於硬核,建議點贊收藏轉發三連,避免小編心情波動導致文章神秘消失
  • 畢竟小編今天可能愛答不理,明天可能高攀不起——
  • 但你的收藏夾,永遠是你最穩的知識備份!

    🐶💻 (小聲説:關我小黑屋?不存在的,備份早已同步GitHub/公眾號/網盤!)

📚 往期爆文推薦,VIP輪換解鎖:

📖Python/JS/Go/Java四語言同步學習,跨語言系列上線(別在糾結學什麼單語言了)

🔍 沒看過前傳?快補課!
1-24篇請移步至"PY-JS-GO-JAVA基礎進階學習系列"合集中閲讀

  • Python/JS/Go/Java同步學習(第二十八篇)四語言“字典的複製和更新“對照表: 雷影“老闆“發飆要求員工下班留校培訓風暴(附源碼/截圖/參數表/避坑指南)
  • Python/JS/Go/Java同步學習(第二十七篇)四語言“字典獲取內容和刪除“對照表: 雷影“老闆“發飆要求員工下班留校培訓風暴(附源碼/截圖/參數表/避坑指南)
  • Python/JS/Go/Java同步學習(第二十六篇)四語言“字典轉換2和遍歷“對照表: 雷影“老闆“發飆要求員工下班留校培訓風暴(附源碼/截圖/參數表/避坑指南)
  • Python/JS/Go/Java同步學習(第二十五篇)四語言“字典創建轉換“對照表: 雷影“老闆“發飆要求員工下班留校培訓風暴(附源碼/截圖/參數表/避坑指南)
user avatar
0 用戶, 點贊了這篇動態!

發表 評論

Some HTML is okay.