🤝 免罵聲明:
- 本文
添加刪除集合元素操作經本蜀黎實戰整理,旨在提供快速參考指南📝- 因各語言版本迭代及不同系統
環境差異,偶爾可能出現整理不全面之處,實屬正常✅- 理性討論歡迎,無憑據攻擊將依據平台規則處理,並可能觸發內容自動備份傳播機制🙏!
- 若遇具體問題,請帶圖評論區留言,本蜀黎必拔碼相助🤝
※ 温馨提示
- 若本內容
不慎觸及某些利益,請理性溝通,但刪稿免談,內容去留僅由平台規則決定。 - 若是學生/自學黨,歡迎白嫖,記得轉發給和你一樣在這條路上同行的夥伴——🔁
- 知識不該被壟斷,而該成為照亮彼此前行的燈。
🛡️ 【技術劇情免責聲明】
⚠️ 劇情設定説明
- 本文中的職場衝突情節,均為行業技術實踐的
戲劇化隱喻🥇 - 所有角色立場設計,旨在對比不同技術方案的適用場景🥈
- 無任何現實指向性,亦
不倡導對立思維🥉
🌿 技術交流初心
- 旨在通過
場景化演繹,降低技術理解門檻🥇 - 遵循「以代碼服人,以邏輯辨真」的極客精神🥈
- 鼓勵
理性探討,反對任何形式的技術偏見🥉
💡 閲讀建議
- 請重點關注技術實現路徑的多樣性🥇
- 建議將劇情視為技術選型的「壓力測試沙盒」🥈
- 歡迎在評論區分享您的技術解決方案🥉
🌿【虎山CTO·藥材使用警示】
- 🍀是藥
三分毒,代碼亦如方! - ❌文中所涉藥材均為技術隱喻,嚴禁實際配伍使用。
- 🙏真實用藥請遵醫囑,亂用者——
- 系統崩壞事小,氣血逆流事大!⚠️
📚 系列文章預告:
- 近期內容將聚焦編程基礎構建,以
「原創知識矩陣」形式系統梳理核心概念。每篇如連續劇集般環環相扣,建議按順序學習——知識點一鍋端,療效更持久!🔥
🧙♂️【場景還原:集合增刪特訓】
⚡ 雷影老闆(一拳砸碎鍵盤):
- 「🏆今天學集合增刪——添加元素如調兵遣將,刪除元素如斬將奪旗!學不會的,通宵手寫《哈希表兵法》1000遍!」
🦊 鳴人(對着藥材配伍表抓狂):
- 「伊魯卡老師!為什麼Python用
add()添加,Java也是add(),Go卻要map[key]=true?我的藥方要亂套了!😫」
👨🏫 伊魯卡(粉筆頭精準命中後腦):
- 「鳴人!集合增刪如調兵——🧬
add()=增援部隊,remove()=精準斬首,pop()=隨機抽殺🥓- 亂用刪除方法=陣法崩潰,君臣錯位!🌿」
🐯 卡卡西(從《親熱天堂》後抬眼):
- 「🎰嘖...連基礎增刪都不會,以後怎麼學影分身·緩存淘汰之術?」
🧘【扎馬步·集合增刪心法】
📚 三大增刪操作如陣法根基:
- 添加元素 → 調兵遣將(
add()/map[key]=true)🥇 - 安全刪除 → 温和遣散(
discard()/delete())🥈 - 強制刪除 → 精準斬首(
remove()/迭代器刪除)🥉
🔍 增刪要訣如陣法禁忌:
- 判重宜謹慎 → 調兵
先查名冊(防重複調遣)🍒 - 刪除需確認 → 斬首要
驗明正身(防誤傷友軍)🩸 - 空集處理穩 → 空營也要
守規矩(防空指針)🧬
🌿 虎山CTO心法要訣:
- 增兵之道:
add()最常用,但要注意類型統一🥇 - 刪兵之術:
discard()最安全,remove()最精準🥈 - 清營之法:
clear()最徹底,但要慎用🥉
🎯【集合的三大核心用途】
🔥 用途一:自動去重 → 智能篩藥機
# 傳統列表:重複藥材混入
藥材列表 = ["當歸", "黃芪", "當歸", "人蔘", "黃芪"] # 重複!
print(f"重複藥方: {藥材列表}")
# 集合:自動去重
藥材集合 = {"當歸", "黃芪", "當歸", "人蔘", "黃芪"} # 自動去重!
print(f"純淨藥方: {藥材集合}")
# 輸出: {'當歸', '人蔘', '黃芪'} - 重複的自動消失!
🔥 用途二:成員檢測 → 閃電查藥術
藥材庫 = {"當歸", "黃芪", "人蔘", "枸杞"}
# 傳統查找:遍歷整個列表
if "當歸" in 藥材庫: # O(1) 瞬間完成!
print("✅ 藥材存在!")
# 比列表快100倍!(列表需要O(n)遍歷)
🔥 用途三:數學運算 → 藥方比對器
方劑A = {"當歸", "黃芪", "人蔘"} # 補氣方
方劑B = {"黃芪", "枸杞", "紅棗"} # 養血方
# 交集:共同藥材
共同藥材 = 方劑A & 方劑B # {"黃芪"}
# 並集:所有藥材
所有藥材 = 方劑A | 方劑B # {"當歸", "黃芪", "人蔘", "枸杞", "紅棗"}
# 差集:A有B無
獨特藥材 = 方劑A - 方劑B # {"當歸", "人蔘"}
💼【實戰場景:集合的威力】
🏥 場景一:HIS系統藥品管理
# 藥品庫存去重
所有藥品 = ["青黴素", "阿司匹林", "青黴素", "布洛芬", "阿司匹林"]
唯一藥品庫 = set(所有藥品) # 自動去重!
print(f"標準化藥品庫: {唯一藥品庫}")
🛒 場景二:電商用户行為分析
# 用户瀏覽記錄去重
用户A瀏覽 = ["商品1", "商品2", "商品1", "商品3"] # 重複瀏覽
唯一瀏覽 = set(用户A瀏覽) # 真實興趣商品
print(f"用户真實興趣: {唯一瀏覽}")
🔐 場景三:權限系統黑名單
# 系統黑名單快速檢測
黑名單 = {"黑客IP1", "惡意用户2", "爬蟲IP3"}
來訪用户 = "黑客IP1"
if 來訪用户 in 黑名單: # 毫秒級檢測!
print("🚫 拒絕訪問!")
else:
print("✅ 允許訪問")
📊【集合 vs 列表:性能對決】
| 操作 | 列表(List) | 集合(Set) | 優勢倍數 |
|---|---|---|---|
| 查找元素 | O(n) 遍歷整個列表 | O(1) 哈希直接定位 | 快100倍+ |
| 去重操作 | 需要手動遍歷去重 | 自動去重,天生唯一 | 代碼量減少80% |
| 成員檢測 | x in list 慢 |
x in set 閃電般快 |
性能碾壓 |
| 內存佔用 | 存儲所有元素 | 只存唯一元素 | 節省內存 |
📊【四語言集合增刪對比表】
| 操作類型 | Python | JavaScript | Go | Java |
|---|---|---|---|---|
| 添加元素 | set.add(x) |
set.add(x) |
map[x]=true |
set.add(x) |
| 安全刪除 | set.discard(x) |
set.delete(x) |
delete(map, x) |
set.remove(x) |
| 強制刪除 | set.remove(x) |
❌ 無 | ❌ 無 | iterator.remove() |
| 隨機刪除 | set.pop() |
取第一個+delete | 取第一個+delete | iterator.remove() |
| 清空集合 | set.clear() |
set.clear() |
遍歷delete | set.clear() |
| 刪除空元素 | discard不報錯 | delete不報錯 | delete不報錯 | remove不報錯 |
🎯【什麼時候該用集合?】
✅ 優先使用集合的場景:
- 🔍 快速查找:需要頻繁
判斷元素是否存在 - 🚫 自動去重:數據天然需要
唯一性 - 🧮 集合運算:需要
交集、並集、差集操作 - 🎯 成員檢測:權限驗證、
黑名單檢查
❌ 不適合集合的場景:
- 📝 需要順序:集合是
無序的! - 📊 需要索引:集合不能按
位置訪問 -
🔄 允許重複:需要
保留重複數據的場景⚠️【避坑指南·增刪界的"陣法反噬"】
🐍 Python:remove vs discard
藥材集 = {"當歸", "丹蔘"} # ✅ 安全刪除 藥材集.discard("未知") # 不報錯,靜默失敗 # 💥 危險刪除 藥材集.remove("未知") # KeyError: '未知'💣 JavaScript:Set的刪除陷阱
const 藥材集 = new Set(["當歸", "丹蔘"]); // ✅ 唯一刪除方法 藥材集.delete("當歸"); // true - 刪除成功 藥材集.delete("未知"); // false - 刪除失敗但不報錯 // 💥 沒有remove方法,需要自己實現強制刪除⚡ Go:map刪除的注意事項
藥材集 := map[string]bool{"當歸": true, "丹蔘": true} // ✅ 安全刪除 delete(藥材集, "當歸") // 存在則刪除 delete(藥材集, "未知") // 不存在也不報錯 // 💥 清空map需要遍歷刪除 for 藥材 := range 藥材集 { delete(藥材集, 藥材) }☕ Java:迭代器刪除的坑
Set<String> 藥材集 = new HashSet<>(Arrays.asList("當歸", "丹蔘")); // 💥 錯誤:併發修改異常 for (String 藥材 : 藥材集) { if (藥材.equals("當歸")) { 藥材集.remove(藥材); // ConcurrentModificationException! } } // ✅ 正確:使用迭代器 Iterator<String> iterator = 藥材集.iterator(); while (iterator.hasNext()) { if (iterator.next().equals("當歸")) { iterator.remove(); // 安全刪除 } }
以下是本蜀黎整理源碼和截圖⏬
1.Python源碼⏬
# ==================== 財務集合模塊 ====================
# 可疑科目.add("預提費用") # 給黑名單塞小紙條 📝
# 臨時科目.pop() # 隨機抓個替罪羊 🎭
# 冗餘科目.discard("呆賬") # 温柔踢出不良資產 🧹
# 問題科目.remove("虛增") # 精準切除財務腫瘤 🔪
# ⚠️ERP_冷溪虎山:亂切科目會導致三觀崩塌
print("🍒🍒🍒🍒🍒以下是add添加元素")
hdj = {"焦山楂","焦神曲","焦麥芽"} #消化藥 焦三仙 字符集合 隨機順序
hdj.add("焦山楂") #添加重複元素不生效,集合自動去重
hdj.add("山楂") #正常添加
hdj.add(3) #添加數字
hdj.add((13,23)) #添加元組
print(hdj)
print("\n","🥏🥏🥏🥏🥏以下是隨機刪除元素")
blood = {"當歸","丹蔘","莪術"}
blood.pop()
print(blood)
print("\n","🥏🥏🥏🥏🥏以下是discard指定刪除元素")
blood1 = {"當歸","丹蔘","莪術"}
blood1.discard("當歸") #指定刪除
blood1.discard("未知") #不會報錯,刪除不在集合元素不做任何改動
print(blood1)
print("\n","🥏🥏🥏🥏🥏以下是remove指定刪除元素")
blood2 = {"當歸","丹蔘","莪術"}
blood2.remove("當歸") #指定刪除
# blood2.remove("未知") #會報錯
# blood2.clear() #刪除所有元素
print(blood2)
def lengxi_tiger(chapter):
print(f"""
🍵【Python虎山寶寶專屬提醒】🍵
老鐵,你已經肝完 {chapter} 章啦!
快起來活動下頸椎,接杯熱水~
你是我的心頭肉,別累壞了!(๑•̀ㅂ•́)و✧
別讓本座_冷溪tiger操心
""")
lengxi_tiger(10)
2.Nodejs源碼⏬
// ==================== 中藥集合模塊 ====================
// 添加新禁忌 // 給生死簿加註死亡筆記 📓
// 隨機淘汰藥材 // 抓鬮決定誰出局 🎲
// 安全移除配伍 // 温和清理藥渣 🌿
// 強制剔除毒性 // 精準排毒手術 🏥
// ⚠️虎山老藥師:暴力操作會炸燬丹爐
console.log("🍒🍒🍒🍒🍒 以下是add添加元素");
// JavaScript使用Set對象
const hdj = new Set(["焦山楂", "焦神曲", "焦麥芽"]); // 消化藥 焦三仙 字符集合 順序不保證
hdj.add("焦山楂"); // 添加重複元素不生效,Set自動去重
hdj.add("山楂"); // 正常添加
hdj.add(3); // 添加數字
hdj.add([13, 23]); // 注意:JavaScript的Set不能直接存儲數組/元組,這裏會存儲數組引用
console.log([...hdj]); // 轉換為數組打印
console.log("\n", "🥏🥏🥏🥏🥏 以下是隨機刪除元素");
const blood = new Set(["當歸", "丹蔘", "莪術"]);
const removedElement = blood.values().next().value; // 獲取第一個元素(隨機)
blood.delete(removedElement); // 刪除該元素
console.log([...blood]);
console.log("\n", "🥏🥏🥏🥏🥏 以下是discard指定刪除元素");
const blood1 = new Set(["當歸", "丹蔘", "莪術"]);
blood1.delete("當歸"); // 指定刪除
blood1.delete("未知"); // 不會報錯,刪除不存在的元素無影響
console.log([...blood1]);
console.log("\n", "🥏🥏🥏🥏🥏 以下是remove指定刪除元素");
const blood2 = new Set(["當歸", "丹蔘", "莪術"]);
blood2.delete("當歸"); // 指定刪除
// blood2.delete("未知"); // 不會報錯,但JavaScript沒有類似Python的remove方法
// blood2.clear(); // 刪除所有元素
console.log([...blood2]);
function lengxiTiger(chapter) {
console.log(`%c
🥤【JS小可愛注意】🥤
你已經征服了 ${chapter} 個章節!
快站起來扭扭腰,眨眨眼~
本座_lengxi心疼你的肝啊!(っ◕‿◕)っ
`, "color: #FF69B4; font-size: 14px");
}
// 每10章調用
lengxiTiger(10);
3.Go源碼⏬
package main
import (
"fmt"
)
// ==================== 倉儲集合模塊 ====================
// 新增屏蔽貨品 // 給黑名單釘告示牌 🚫
// 隨機清理庫存 // 閉眼下架大法 🙈
// 安全移除商品 // 智能貨架自我淨化 🛁
// 強制淘汰次品 // 質檢員的大剪刀 ✂️
// ⚠️冷溪物流:操作失誤會引發庫存雪崩
func main() {
fmt.Println("🍒🍒🍒🍒🍒以下是add添加元素")
// Go使用map模擬集合
hdj := make(map[interface{}]bool)
hdj["焦山楂"] = true
hdj["焦神曲"] = true
hdj["焦麥芽"] = true
hdj["焦山楂"] = true // 添加重複元素不生效,Go的map自動去重
hdj["山楂"] = true // 正常添加
hdj[3] = true // 添加數字
hdj[struct{ a, b int }{13, 23}] = true // 添加結構體(模擬元組)
// 打印集合(需要手動遍歷)
for k := range hdj {
fmt.Print(k, " ")
}
fmt.Println()
fmt.Println("\n", "🥏🥏🥏🥏🥏以下是隨機刪除元素")
blood := make(map[string]bool)
blood["當歸"] = true
blood["丹蔘"] = true
blood["莪術"] = true
// 獲取第一個鍵(隨機)
for k := range blood {
delete(blood, k) // 刪除該元素
break
}
// 打印集合
for k := range blood {
fmt.Print(k, " ")
}
fmt.Println()
fmt.Println("\n", "🥏🥏🥏🥏🥏以下是discard指定刪除元素")
blood1 := make(map[string]bool)
blood1["當歸"] = true
blood1["丹蔘"] = true
blood1["莪術"] = true
delete(blood1, "當歸") // 指定刪除
delete(blood1, "未知") // 不會報錯,刪除不存在的元素無影響
// 打印集合
for k := range blood1 {
fmt.Print(k, " ")
}
fmt.Println()
fmt.Println("\n", "🥏🥏🥏🥏🥏以下是remove指定刪除元素")
blood2 := make(map[string]bool)
blood2["當歸"] = true
blood2["丹蔘"] = true
blood2["莪術"] = true
delete(blood2, "當歸") // 指定刪除
// delete(blood2, "未知") // 不會報錯
// 沒有clear方法,需要手動清空
for k := range blood2 {
delete(blood2, k)
}
// 打印集合
for k := range blood2 {
fmt.Print(k, " ")
}
fmt.Println()
HushanTiter30(10)
}
func HushanTiter30(chapter int) {
fmt.Printf(`
🚨【Go語言戰士注意】🚨
你已經持續戰鬥%d個章節!
--------------------------
執行以下命令:
$ 起身拉伸
$ 補充水分
$ 對鏡子誇自己帥
--------------------------
你可是本項目的稀缺資源!
本座巴不得把我畢生所學全部傳授你們_冷溪友好提示
`, chapter)
}
4.Java源碼⏬
import java.util.*;
// ==================== ERP集合模塊 ====================
// 添加新權限 // 給系統打安全補丁 🔒
// 隨機清理緩存 // 內存救急抽獎箱 🎰
// 安全移除節點 // 優雅降級處理 🎩
// 強制刪除異常 // 系統外科手術 🔪
// ⚠️ERP老兵_冷溪虎山:刪庫會觸發全球通緝
class main30 {
public static void main(String[] args) {
System.out.println("🍒🍒🍒🍒🍒以下是add添加元素");
// Java使用HashSet(無序)或LinkedHashSet(有序)
Set<Object> hdj = new HashSet<>(Arrays.asList("焦山楂", "焦神曲", "焦麥芽")); // 消化藥 焦三仙 字符集合 順序不保證
hdj.add("焦山楂"); // 添加重複元素不生效,Set自動去重
hdj.add("山楂"); // 正常添加
hdj.add(3); // 添加數字
hdj.add(new ArrayList<>(Arrays.asList(12,13))); // 添加數組(注意:Java的Set不能直接存儲元組,這裏用數組模擬)
System.out.println(hdj); // 打印集合
System.out.println("\n🥏🥏🥏🥏🥏以下是隨機刪除元素");
Set<String> blood = new HashSet<>(Arrays.asList("當歸", "丹蔘", "莪術"));
Iterator<String> iterator = blood.iterator();
if (iterator.hasNext()) {
iterator.next(); // 獲取第一個元素(隨機)
iterator.remove(); // 刪除該元素
}
System.out.println(blood);
System.out.println("\n🥏🥏🥏🥏🥏以下是discard指定刪除元素");
Set<String> blood1 = new HashSet<>(Arrays.asList("當歸", "丹蔘", "莪術"));
blood1.remove("當歸"); // 指定刪除
blood1.remove("未知"); // 不會報錯,刪除不存在的元素無影響
System.out.println(blood1);
System.out.println("\n🥏🥏🥏🥏🥏以下是remove指定刪除元素");
Set<String> blood2 = new HashSet<>(Arrays.asList("當歸", "丹蔘", "莪術"));
blood2.remove("當歸"); // 指定刪除
// blood2.remove("未知"); // 不會報錯
// blood2.clear(); // 刪除所有元素
System.out.println(blood2);
LengxiHushan30.remind(10);
}
}
class LengxiHushan30 {
public static void remind(int chapter) {
System.out.println(
"\n☕【Java老中醫lengxitiger關愛提示】☕\n" +
"您已連續學習" + chapter + "個章節!\n" +
"建議:\n" +
"1. 做10個深蹲\n" +
"2. 遠眺窗外6米外\n" +
"3. 對本虎山和自己説聲'我超棒'\n" +
"注意:你的頭髮是本項目重要資產!\n"
);
}
}
源碼分享結束⏫
📜【結局:全員調兵初成】
⚡ 雷影老闆(看着流暢的增刪操作瞳孔地震):
- 「🏆這兵調得比我的雷遁·雷切還準!但必須掌握四語言增刪差異,否則獎金扣去優化系統性能!」
🌸 雛田(小聲提醒鳴人):
- 「鳴人...Java的
iterator.remove()是唯一安全的遍歷刪除...就像暗部執行秘密任務...🔒」
🦊 鳴人(舉着拉麪碗歡呼):
- 「哈哈哈!原來
discard()就是温柔勸退!佐助——來比誰先增刪1000個元素不報錯!🍜」
🐯 卡卡西(合上《親熱天堂》):
- 「嗯...總算有點上忍的樣子了。下次教你們用集合實現寫輪眼·數據去重...🎯」
💥 佐助(寫輪眼微閃):
- 「哼...吊車尾的,等你能用Go實現線程安全增刪再説吧。」
🧪【四語言集合增刪心法口訣】
Python:
add()調兵,discard()勸退,remove()斬首,pop()抽殺🏆
JavaScript:
add()增援,delete()解僱,隨機刪除要手動🥇
Go:
map[key]=true徵兵,delete()退伍,清空要遍歷🥈
Java:
add()招兵,remove()開除,iterator.remove()暗殺🥉
🔥 記憶口訣:
- 增刪元素如調兵,
add/del要記清🥇 - 安全強制兩相宜,空集處理要小心🥈
- 四法通曉陣法成,數據操作如反掌!🥉
🔖虎山CTO三道護體符
因果符:
- 🚀我每被惡意舉報一次,就加更一篇乾貨——感謝黑粉為我提供創作燃料。
鏡像符:
- 📌若遭攻擊(檢測到行業焦慮值上升),建議某些機構停止這種“DDoS攻擊”,將資源用於提升自身課程服務的“帶寬”與“質量”。
重生符:
- 💪本人是經歷過生死重啓的野生程序猿,系統兼容性極強——你們那點小打小鬧,連個 warning 都觸發不了。
⚠️ 免責聲明(附因果律警告)
本代碼已注入中醫玄學能量,請謹慎使用:
-
✅ 允許白嫖,但白嫖不點贊可能導致:
- 下次面試官恰好問到這個算法
- 鍵盤自動打出
//這裏感謝冷溪虎山CTO - 奶茶精準灑在剛寫好的代碼上
-
✅ 允許商用轉發,但商用不註明出處可能觸發:
- 系統類型混亂自動轉型
- 數據庫莫名存儲"君臣佐使"字段
-
✅ 允許吐槽,但吐槽不帶改進建議可能引發:
- 終生與老闆N連鞭相愛相殺
🚀 現在立即行動:
- 點贊 → 吸收本篇算法精華+怪蜀黎腦洞思維
- 收藏 → 避免日後求醫無門
- 關注 → 接收更多「中醫+代碼」腦洞
- 評論區留言 → 領取你的專屬「算法藥方」
⚠️ 友情提示:
- 本文內容過於硬核,建議點贊收藏轉發三連,避免小編
心情波動導致文章神秘消失! - 畢竟小編今天可能愛答不理,明天可能高攀不起——
-
但你的收藏夾,永遠是你最穩的知識備份!
🐶💻 (小聲説:關我小黑屋?不存在的,備份早已同步GitHub/公眾號/網盤!)
📚 往期爆文推薦,VIP輪換解鎖:
📖Python/JS/Go/Java四語言同步學習,跨語言系列上線(別在糾結學什麼單語言了)
🔍 沒看過前傳?快補課!
前1-24篇請移步至"PY-JS-GO-JAVA基礎進階學習系列"合集中閲讀
- Python/JS/Go/Java同步學習(第二十九篇)四語言“集合創建“對照表: 雷影“老闆“發飆要求員工下班留校培訓風暴(附源碼/截圖/參數表/避坑指南)
- Python/JS/Go/Java同步學習(第二十八篇)四語言“字典的複製和更新“對照表: 雷影“老闆“發飆要求員工下班留校培訓風暴(附源碼/截圖/參數表/避坑指南)
- Python/JS/Go/Java同步學習(第二十七篇)四語言“字典獲取內容和刪除“對照表: 雷影“老闆“發飆要求員工下班留校培訓風暴(附源碼/截圖/參數表/避坑指南)
- Python/JS/Go/Java同步學習(第二十六篇)四語言“字典轉換2和遍歷“對照表: 雷影“老闆“發飆要求員工下班留校培訓風暴(附源碼/截圖/參數表/避坑指南)
- Python/JS/Go/Java同步學習(第二十五篇)四語言“字典創建轉換“對照表: 雷影“老闆“發飆要求員工下班留校培訓風暴(附源碼/截圖/參數表/避坑指南)