Stories

Detail Return Return

Python/JS/Go/Java同步學習(第二十三篇)四語言“列表排序|查找統計“對照表

🤝 免罵聲明:
  • 本文列表排序|查找統計操作經本蜀黎實戰整理,旨在提供快速參考指南📝
  • 因各語言版本迭代及不同系統環境差異,偶爾可能出現整理不全面之處,實屬正常✅
  • 歡迎理性交流補充,噴子勿噴——畢竟你行你上來寫,我敬你是條漢子,告訴我的你原文鏈接,我給你一鍵三連+轉發👍!
  • 若遇具體問題,請帶圖評論區留言,本蜀黎必拔碼相助🤝
    土味海報
🐯 虎山CTO劇透預警:
  • 當前學的sort()只是藥櫃整理基本功,真正的煉丹術在後頭🍒
  • 🚀高階函數篇(100+篇後深度解鎖):
  • 四語言map/filter/reduce對比 + 函數式編程思想💎
  • 實戰升級:從簡單排序→複雜數據流水線處理🌈
  • 中醫隱喻:map=藥材炮製,filter=去蕪存菁,reduce=藥性融合🔁
🎯 虎山學習心法:
  • 技術如中藥——循序漸進才能根除病灶,急於求成反而走火入魔!
    先把藥櫃整理明白,100+篇後跟我一起開爐煉丹🍖
🌿【虎山CTO·藥材使用警示】
  • 🍀是藥三分毒,代碼亦如方!
  • ❌文中所涉藥材均為技術隱喻,嚴禁實際配伍使用。
  • 🙏真實用藥請遵醫囑,亂用者——
  • 系統崩壞事小,氣血逆流事大!⚠️
📚 系列文章預告:
  • 近期內容將聚焦編程基礎構建,以「原創知識矩陣」形式系統梳理核心概念。每篇如連續劇集般環環相扣,建議按順序學習——知識點一鍋端,療效更持久!🔥

🧠【場景還原:列表排序查找統計特訓】

⚡ 雷影老闆(拍桌震翻數據報表):
  • 「🏆本週KPI考核——排序要快、查找要準、統計要狠!做不到的,通宵手寫《數據結構心經》800遍!」
🦊 鳴人(對着混亂藥方抓狂):
  • 「伊魯卡老師!為什麼Python排序用sort(),Java要用Collections.sort()?Go還要手動反轉?我的藥方全亂套了!😫」
👨‍🏫 伊魯卡(粉筆頭精準命中):
  • 鳴人!排序如整理藥櫃——🌿
  • sort()→ 給藥材按藥性重新排列🔁
  • sorted()→ 抄寫整理版藥方(不擾原櫃)📌
  • reverse() → 倒鬥式查藥櫃(從後往前)🌀
🐯 卡卡西(從《親熱天堂》後抬眼):
  • 「✨嘖...連藥櫃都整理不好,以後怎麼學影分身·快速檢索之術?」

🧘【扎馬步·排序查找統計心法】

📚 排序如整藥櫃,方法不同效率迥異:
  • 原地排序 → 直接整理原藥櫃(省空間但亂序)🥇
  • 生成新序 → 抄寫整理版藥方(保原櫃但費紙)🥈
  • 反轉序列 → 倒查藥櫃(應急檢索專用)🥉
🔍 查找如尋藥材,索引錯位則藥性全失:
  • indexOf() → 按名定位藥材格🥇
  • count() → 統計藥材庫存量🥈
  • sum() → 計算藥材總重量🥉
📊 統計如盤庫存,精準方能避虧空:
  • 數字求和 → 算總賬防遺漏🥇
  • 頻次統計 → 查暢銷藥材🥈
  • 索引定位 → 快速補貨定位🥉
操作類型 Python JavaScript Go Java
原地排序 list.sort() arr.sort() sort.Strings()(需導入 "sort" 包,針對 []string) Collections.sort(list)
生成新序 sorted(list) [...arr].sort()(先拷貝再排序,原數組不變) 手動複製切片 + 排序(如:sorted := append([]int{}, slice...) 然後 sort.Ints(sorted) new ArrayList<>(list) + Collections.sort(newList)
反轉序列 list.reverse() arr.reverse() 手動交換元素(或使用 reverse 第三方庫) Collections.reverse(list)
查找索引 list.index(x) arr.indexOf(x) 遍歷查找(無內置方法) list.indexOf(x)(對於 List)
統計次數 list.count(x) arr.filter(item => item === x).length 遍歷計數(無內置方法) Collections.frequency(list, x)
數字求和 sum(list) arr.reduce((a, b) => a + b, 0) 遍歷累加(或使用 loop + += list.stream().mapToInt
(Integer::intValue).sum()

⚠️【避坑指南·排序查找界的"藥性相沖"】

🐍 Python:中文排序的編碼陷阱
藥方 = ["山楂", "神曲", "麥芽", "黃芪"]
藥方.sort()  # ✅ 按拼音首字母排序
# 但生僻字可能亂序,需指定key=locale.strxfrm

💣 JavaScript:數字排序的經典坑

let 藥價 = [15, 18, 26, 40, 21];
藥價.sort();  // 💥 結果:[15, 18, 21, 26, 40]?錯!實際按字符串排序!
藥價.sort((a, b) => a - b);  // ✅ 正確數字排序

⚡ Go:手動反轉的繁瑣

藥方 := []string{"山楂", "神曲", "麥芽"}
// 反轉需要手動操作
for i, j := 0, len(藥方)-1; i < j; i, j = i+1, j-1 {
    藥方[i], 藥方[j] = 藥方[j], 藥方[i]
}

☕ Java:類型系統的嚴格

List<Object> 混合列表 = Arrays.asList("山楂", 15, "麥芽");
// 混合類型無法直接排序,需先統一類型

🧪【實戰場景:藥房庫存整理】

場景:雷影要求整理藥房,快速找出暢銷藥材

Python(一體化操作):

藥方 = ["山楂", "神曲", "麥芽", "黃芪", "山楂"]
藥方.sort()  # ✅ 按藥名排序
暢銷藥 = 藥方.count("山楂")  # ✅ 統計山楂銷量
總庫存 = len(藥方)  # ✅ 計算總藥材數
四語言對比:
// JavaScript
let 藥方 = ["山楂", "神曲", "麥芽", "黃芪", "山楂"];
藥方.sort();  // ✅ 排序
let 暢銷藥 = 藥方.filter(x => x === "山楂").length;  // ✅ 統計
let 總庫存 = 藥方.length;  // ✅ 總數
// Go
藥方 := []string{"山楂", "神曲", "麥芽", "黃芪", "山楂"}
sort.Strings(藥方)  // ✅ 排序
暢銷藥 := 0
for _, v := range 藥方 {
    if v == "山楂" { 暢銷藥++ }
}
總庫存 := len(藥方)
// Java
List<String> 藥方 = Arrays.asList("山楂", "神曲", "麥芽", "黃芪", "山楂");
Collections.sort(藥方);  // ✅ 排序
int 暢銷藥 = Collections.frequency(藥方, "山楂");  // ✅ 統計
int 總庫存 = 藥方.size();
🐯【虎山CTO的排序查找終極暴論】
  • 排序如整櫃:原地排序省空間,生成新序保安全🏆
  • 查找如尋藥:索引定位要精準,越界查詢如踩雷🥇
  • 統計如盤庫:求和防遺漏,計數知暢銷🥈
  • 跨語言心法:Python最便捷,Go最手動,Java最嚴格,JS最靈活🥉
  • 數據整理如調理氣血——順則通,亂則崩!
以下是本蜀黎整理源碼和截圖⏬
1.Python源碼
# ==================== 財務排序模塊 ====================
# 賬本.sort()  # 給科目做全麻整形手術 🏥
# sorted(明細賬)  # 生成審計專用美容版 💅
# 憑證.reverse()  # 讓時間倒流查假賬 ⏪
# ⚠️ERP_冷溪虎山:亂序會導致資產負債表骨折

hd = ['山楂','神曲','麥芽','谷芽','雞矢藤','雞內金','蜘蛛香','沙棘',"麥冬"] # 列表
hd_copy = hd.copy() #複製hd
number = [15,18,26,40,21,33,37,45] #8個數字

hdj = ["焦山楂","焦神曲","焦麥芽",'山楂'] #消化藥 焦三仙

print("🍒🍒🍒🍒🍒🍒🍒🍒以下中文排序")
hd.sort() #升序降序無效,但是會按首字相同歸類
print(hd)
hd_copy.reverse()  #反轉序列
print(hd_copy)

print("\n🍒🍒🍒🍒🍒🍒🍒🍒以下數字排序")
number.sort() #升序排列
print(number)
number.sort(reverse=True)  #降序排列
print(number)


print("\n🍒🍒🍒🍒🍒🍒🍒🍒以下生成新的對象")
new_number = sorted(number)  #新對象正向序列
new_number1 = sorted(number,reverse=True) #新對象反向序列
print(new_number,"\n",new_number1)

print("\n🍒🍒🍒🍒🍒🍒🍒🍒以下查找和統計")
print(hdj.index("焦麥芽")) #返回索引2
print(hdj.count("山楂")) #出現次數1
print(sum(number)) #求和

Python

2.Nodejs源碼
// ==================== 中藥排序模塊 ====================
// 藥材按藥性排序  // 君臣佐使論資排輩 👑
// 生成煎藥順序表  // 仙丹標準化流水線 🏭
// 反轉配伍順序  // 逆練九陰真經警告 ☯️
// ⚠️虎山老藥師:順序錯亂會引發丹爐爆炸

// 列表
let hd = ['山楂', '神曲', '麥芽', '谷芽', '雞矢藤', '雞內金', '蜘蛛香', '沙棘', "麥冬"];
// 複製 hd
let hd_copy = [...hd]; // 使用擴展運算符複製數組
// 數字列表
let number = [15, 18, 26, 40, 21, 33, 37, 45];

// 中文排序(按 Unicode 碼點升序)
hd.sort(); // 升序(按首字母排序)
console.log("🍒🍒🍒🍒🍒🍒🍒🍒 以下中文排序(升序)");
console.log(hd);
hd_copy.reverse(); // 反轉序列
console.log("🍒🍒🍒🍒🍒🍒🍒🍒 反轉後的 hd_copy");
console.log(hd_copy);

// 數字排序
console.log("\n🍒🍒🍒🍒🍒🍒🍒🍒 以下數字排序");
number.sort((a, b) => a - b); // 升序排列
console.log("升序:", number);
number.sort((a, b) => b - a); // 降序排列
console.log("降序:", number);

// 生成新的排序對象
console.log("\n🍒🍒🍒🍒🍒🍒🍒🍒 以下生成新的對象");
let new_number = [...number].sort((a, b) => a - b); // 新對象正向序列
let new_number1 = [...number].sort((a, b) => b - a); // 新對象反向序列
console.log("正向:", new_number, "\n反向:", new_number1);

// 查找和統計
let hdj = ["焦山楂", "焦神曲", "焦麥芽", '山楂'];
console.log("\n🍒🍒🍒🍒🍒🍒🍒🍒 以下查找和統計");
console.log("焦麥芽的索引:", hdj.indexOf("焦麥芽")); // 返回索引 2
console.log("山楂的出現次數:", hdj.filter(item => item === "山楂").length); // 出現次數 1
console.log("數字總和:", number.reduce((sum, num) => sum + num, 0)); // 求和
 

nodejs

3.Go源碼
package main

import (
    "fmt"
    "sort"
)

// ==================== 倉儲排序模塊 ====================
// 貨品按入庫排序  // 強迫症貨架管理法 🧹
// 生成分揀順序表  // 智能物流指揮中心 🧠
// 反轉出庫順序  // 讓快遞坐時光機 🚀
// ⚠️冷溪物流:亂序會導致倉庫貓精神分裂

func main() {
    // 列表
    hd := []string{"山楂", "神曲", "麥芽", "谷芽", "雞矢藤", "雞內金", "蜘蛛香", "沙棘", "麥冬"}
    // 複製 hd
    hd_copy := make([]string, len(hd))
    copy(hd_copy, hd)
    // 數字列表
    number := []int{15, 18, 26, 40, 21, 33, 37, 45}

    // 中文排序(按 Unicode 碼點升序)
    sort.Strings(hd) // 升序(按首字母排序)
    fmt.Println("🍒🍒🍒🍒🍒🍒🍒🍒以下中文排序(升序)")
    fmt.Println(hd)
    // 反轉序列
    for i, j := 0, len(hd_copy)-1; i < j; i, j = i+1, j-1 {
        hd_copy[i], hd_copy[j] = hd_copy[j], hd_copy[i]
    }
    fmt.Println("🍒🍒🍒🍒🍒🍒🍒🍒反轉後的 hd_copy")
    fmt.Println(hd_copy)

    // 數字排序
    fmt.Println("\n🍒🍒🍒🍒🍒🍒🍒🍒以下數字排序")
    sort.Ints(number) // 升序排列
    fmt.Println("升序:", number)
    // 降序排列(先升序,再反轉)
    sort.Ints(number)
    for i, j := 0, len(number)-1; i < j; i, j = i+1, j-1 {
        number[i], number[j] = number[j], number[i]
    }
    fmt.Println("降序:", number)

    // 生成新的排序對象
    fmt.Println("\n🍒🍒🍒🍒🍒🍒🍒🍒以下生成新的對象")
    new_number := make([]int, len(number))
    copy(new_number, number)
    sort.Ints(new_number) // 新對象正向序列
    new_number1 := make([]int, len(number))
    copy(new_number1, number)
    // 降序排列(先升序,再反轉)
    sort.Ints(new_number1)
    for i, j := 0, len(new_number1)-1; i < j; i, j = i+1, j-1 {
        new_number1[i], new_number1[j] = new_number1[j], new_number1[i]
    }
    fmt.Println("正向:", new_number, "\n反向:", new_number1)

    // 查找和統計
    hdj := []string{"焦山楂", "焦神曲", "焦麥芽", "山楂"}
    fmt.Println("\n🍒🍒🍒🍒🍒🍒🍒🍒以下查找和統計")
    index := -1
    for i, v := range hdj {
        if v == "焦麥芽" {
            index = i
            break
        }
    }
    fmt.Println("焦麥芽的索引:", index) // 返回索引 2
    count := 0
    for _, v := range hdj {
        if v == "山楂" {
            count++
        }
    }
    fmt.Println("山楂的出現次數:", count) // 出現次數 1
    sum := 0
    for _, num := range number {
        sum += num
    }
    fmt.Println("數字總和:", sum)
}

golang

4.Java源碼
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;

// ==================== ERP排序模塊 ====================
// 流程節點排序  // 給審批鏈做正骨按摩 💆
// 生成報表副本  // CEO特供美化版 📑
// 反轉操作日誌  // 黑客入侵檢測模式 🕵️♂️
// ⚠️ERP老兵_冷溪虎山:倒序查詢會觸發系統記憶紊亂

class main23 {
    public static void main(String[] args) {
        // 列表
        List<String> hd = new ArrayList<>(Arrays.asList("山楂", "神曲", "麥芽", "谷芽", "雞矢藤", "雞內金", "蜘蛛香", "沙棘", "麥冬"));
        // 複製 hd
        List<String> hd_copy = new ArrayList<>(hd);
        // 數字列表
        List<Integer> number = new ArrayList<>(Arrays.asList(15, 18, 26, 40, 21, 33, 37, 45));

        // 中文排序(按 Unicode 碼點升序)
        hd.sort(null); // 升序(按首字母排序)
        System.out.println("🍒🍒🍒🍒🍒🍒🍒🍒以下中文排序(升序)");
        System.out.println(hd);
        Collections.reverse(hd_copy); // 反轉序列
        System.out.println("🍒🍒🍒🍒🍒🍒🍒🍒反轉後的 hd_copy");
        System.out.println(hd_copy);

        // 數字排序
        System.out.println("\n🍒🍒🍒🍒🍒🍒🍒🍒以下數字排序");
        number.sort(Integer::compareTo); // 升序排列
        System.out.println("升序: " + number);
        number.sort((a, b) -> b - a); // 降序排列(注意:Integer 不能直接減,需改用 Integer.compare(b, a))
        // 修正降序排序方式
        number.sort(Collections.reverseOrder());
        System.out.println("降序: " + number);

        // 生成新的排序對象
        System.out.println("\n🍒🍒🍒🍒🍒🍒🍒🍒以下生成新的對象");
        List<Integer> new_number = new ArrayList<>(number);
        new_number.sort(Integer::compareTo); // 新對象正向序列
        List<Integer> new_number1 = new ArrayList<>(number);
        new_number1.sort(Collections.reverseOrder()); // 新對象反向序列
        System.out.println("正向: " + new_number + "\n反向: " + new_number1);

        // 查找和統計
        List<String> hdj = new ArrayList<>(Arrays.asList("焦山楂", "焦神曲", "焦麥芽", "山楂"));
        System.out.println("\n🍒🍒🍒🍒🍒🍒🍒🍒以下查找和統計");
        System.out.println("焦麥芽的索引: " + hdj.indexOf("焦麥芽")); // 返回索引 2
        long count = hdj.stream().filter(item -> item.equals("山楂")).count(); // 出現次數 1
        System.out.println("山楂的出現次數: " + count);
        int sum = number.stream().mapToInt(Integer::intValue).sum(); // 求和
        System.out.println("數字總和: " + sum);
    }
}

Java

源碼分享結束⏫

📜【結局:全員數據達標】

⚡ 雷影老闆(看着整齊的數據報表瞳孔地震):
  • 「🏆這...這排序速度比我的雷遁·數據庫優化之術還快!全員績效S級——但必須掌握四語言數據操作,否則獎金扣去修數據中台!」
🌸 雛田(小聲提醒鳴人):
  • 「鳴人...sort()前記得備份...就像整理藥櫃前先拍照...📸」
🦊 鳴人(舉着拉麪碗歡呼):
  • 「哈哈哈!原來排序就是給藥材排隊,查找就是找叉燒位置!佐助——來比誰先整理完一樂庫存!🍜」
🐯 卡卡西(合上《親熱天堂》):
  • 「嗯...總算有點樣子了。下次教你們用二分查找實現幻術·精準定位...🎯」
💥 佐助(寫輪眼微閃):
  • 「哼...吊車尾的,等你能用Go手動實現快速排序再説吧。」
🧪【四語言排序查找心法口訣】

Python:

  • sort原地排,sorted新生代,index精準定位,count統計便捷🏆

JavaScript:

  • sort要小心,數字需減函數,indexOf找位置,filter統計靈活🥇

Go:

  • sort包排序,手動反轉序列,遍歷找索引,循環做統計🥈

Java:

  • Collections工具強,類型嚴格不混亂,stream操作現代化,索引越界要預防🥉
🔥 記憶口訣:
  • 排序前備份,查找防越界
  • 統計要精準,類型需統一
  • 四語言通吃,數據任我行!

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

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

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

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

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

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

🚀 現在立即行動:

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

⚠️ 友情提示:

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

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

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

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

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

  • Python/JS/Go/Java同步學習(第二十二篇)四語言“列表刪改查|淺深拷貝“對照表: 雷影“老闆“發飆要求員工下班留校培訓風暴(附源碼/截圖/參數表/避坑指南)
  • Python/JS/Go/Java同步學習(第二十一篇)四語言“列表增改查“對照表: 雷影“老闆“發飆要求員工下班留校培訓風暴(附源碼/截圖/參數表/避坑指南)
  • Python/JS/Go/Java同步學習(第二十篇)四語言“列表遍歷“對照表: 雷影“老闆“發飆要求員工下班留校培訓風暴(附源碼/截圖/參數表/避坑指南)
  • Python/JS/Go/Java同步學習(第十九篇)四語言“列表相關操作“對照表: 雷影“老闆“發飆要求員工下班留校培訓風暴(附源碼/截圖/參數表/避坑指南)
  • Python/JS/Go/Java同步學習(第十八篇)四語言“常用時間類型格式化“對照表: 財務“小南“紙式格式化術處理憑證內容崩潰(附源碼/截圖/參數表/避坑指南)
user avatar
0 users favorite the story!

Post Comments

Some HTML is okay.