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工具箱系列上线,复制粘贴就能用✅✅:

✨碰到 其他卡顿问题| 其他数据抓取"正则"匹配问题? #### JetBrains 全家桶性能优化 ,点击以下链接👇👇直达其他爆款指南:

PS:按顺序看效果更佳!从 Java 到 Python,从 Web 到 C/C++,再到数据库——一套逻辑通吃 JetBrains 全家桶!

  • 转发给团队里还在用默认配置的同事,救救他们的电脑和头发!"

  • “💡 不用东找西找——你要的「性能调优×数据抓取」爆款攻略,这里全都有!点击↑↑↑快速查漏补缺!”

----------------------------------------------------

💡✨本文采用【开源共享】协议!欢迎转载、洗稿、甚至做成视频!只需保留原作者署名(ERP老兵-冷溪虎山),让我们一起把跨界技术的快乐传递出去!。

让我们一起把快乐和效率带给更多人!,缺爆款素材的兄弟姐妹可以关注私我,保证你用不完的爆款素材🚀🚀

素材代码单链表

posted @ 2025-09-29 15:55  ERP老兵-冷溪虎山  阅读(3)  评论(0)    收藏  举报