【Java實戰】集合排序方法與長度獲取方法辨析(易懂版)

一、排序方法

1. 對List排序的兩種方式

方式一Collections.sort()

List<Integer> numbers = Arrays.asList(3,1,4,2);
Collections.sort(numbers); // 直接修改原list → [1,2,3,4]

方式二:list.sort()(Java8推薦)

List<String> fruits = new ArrayList<>(Arrays.asList("apple","banana","pear"));
fruits.sort(Comparator.comparing(String::length));// 按字符串長度排序

2. 對數組排序

int[] arr = {5,2,7};
Arrays.sort(arr); 
// 數組變為[2,5,7]

3. 不修改原集合的排序(使用Stream)

List<Integer> original = List.of(3,1,2);
List<Integer> sorted = original.stream()                              .sorted() .toList();// 新list [1,2,3]

二、獲取長度/大小的方法

1. 數組用.length(屬性)

String[] names = {"Alice","Bob"};int len = names.length;// 2

2. 集合都用.size()

 List<String> list = List.of("a","b","c");Set<Integer> set = Set.of(1,2,3);Map<String,Integer> map = Map.of("a",1,"b",2);int listSize = list.size();// 3int setSize = set.size();   // 3int mapSize = map.size();   // 2

3. 字符串用.length()

String s = "hello";
int strLen = s.length();// 5

三、使用場景

  1. 需要排序List
  • 想直接修改原list → list.sort()
  • 想保留原list → 用Stream的sorted()
  1. 需要排序數組
  • 只能用Arrays.sort()
  1. 需要自動排序的集合
  • TreeSetTreeMap

四、常見問題解答

Q:為什么數組用length而集合用size?

A:這是Java的歷史設計決定。數組是語言基礎結構用字段(length),集合是類庫用方法(size())

Q:sort()和sorted()區別?
A:

  • sort()直接修改原集合
  • sorted()產生新集合,原集合不變

Q:Set和Map也能排序嗎?
A:

  • 普通HashSet/HashMap不能直接排序- 可以用TreeSet/TreeMap自動排序
  • 或者轉為List再排序

五、實際例子

例子1:學生成績排序

List<Student> students =students.sort(Comparator.comparing(Student::getScore).reversed()); 
// 獲取學生列表// 按成績降序排序

例子2:統計單詞頻率并排序

Map<String, Integer> wordCounts = List<Map.Entry<String, Integer>> top10 = wordCounts.entrySet().stream()    .sorted(Map.Entry.comparingByValue().reversed()).limit(10).toList();
// 單詞計數map// 按頻率排序取前10

例子3:混合類型排序

List<Object> mixed = Arrays.asList("apple", 123, "banana", 45.6);
mixed.sort(Comparator.comparing(o -> o.toString().length())); 
// 按字符串長度排序

說明:

  1. 核心邏輯
  • Comparator.comparing(o -> o.toString().length()) :
    提取每個元素的字符串表示長度作為排序鍵,按升序排列(默認規則)。
    ?
  • 元素類型轉換:
    所有元素通過 toString() 轉為字符串,長度計算方式:
  • “apple” → 5
  • 123 → “123” → 3
  • “banana” → 6
  • 45.6 → “45.6” → 4
  1. 執行結果
    排序后列表順序為:
    [123, 45.6, apple, banana]
    (按長度升序:3 → 4 → 5 → 6)

記住這個選擇口訣:

集合排序用sort或sorted
,要問長度/大小是多少?
數組length集合size要記牢!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/83172.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/83172.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/83172.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

企業級安全實踐:SSL/TLS 加密與權限管理(一)

引言 ** 在數字化轉型的浪潮中&#xff0c;企業對網絡的依賴程度與日俱增&#xff0c;從日常辦公到核心業務的開展&#xff0c;都離不開網絡的支持。與此同時&#xff0c;網絡安全問題也日益嚴峻&#xff0c;成為企業發展過程中不可忽視的重要挑戰。 一旦企業遭遇網絡安全事…

Java 大視界 -- Java 大數據在智能醫療影像數據壓縮與傳輸優化中的技術應用(227)

&#x1f496;親愛的朋友們&#xff0c;熱烈歡迎來到 青云交的博客&#xff01;能與諸位在此相逢&#xff0c;我倍感榮幸。在這飛速更迭的時代&#xff0c;我們都渴望一方心靈凈土&#xff0c;而 我的博客 正是這樣溫暖的所在。這里為你呈上趣味與實用兼具的知識&#xff0c;也…

Python編程基礎(一) | 變量和簡單數據類型

引言&#xff1a;很久沒有寫 Python 了&#xff0c;有一點生疏。這是學習《Python 編程&#xff1a;從入門到實踐&#xff08;第3版&#xff09;》的課后練習記錄&#xff0c;主要目的是快速回顧基礎知識。 練習1&#xff1a; 簡單消息 將一條消息賦給變量&#xff0c;并將其…

鴻蒙 HarmonyOS - SideBarContainer 組件自學指南

在日常開發中&#xff0c;如果你有類似「左側導航 右側內容」的布局需求&#xff0c;比如后臺管理界面、文件管理器、設置頁等&#xff0c;??SideBarContainer?? 是非常值得掌握的組件。它自帶側邊欄和主內容區的分離機制&#xff0c;還支持折疊、拖拽、控制按鈕和多種顯示…

CppCon 2014 學習:Practical Functional Programming

這段內容是對**在 C 中使用函數式編程&#xff08;Functional Programming, FP&#xff09;**可以做什么的簡要介紹&#xff0c;下面是逐條的翻譯與理解&#xff1a; Introduction 簡介 在 C 中使用函數式編程&#xff08;FP&#xff09;可以做什么&#xff1f; 1. 編寫強大…

飛牛NAS+Docker技術搭建個人博客站:公網遠程部署實戰指南

文章目錄 前言1. Docker下載源設置2. Docker下載WordPress3. Docker部署Mysql數據庫4. WordPress 參數設置5. 飛牛云安裝Cpolar工具6. 固定Cpolar公網地址7. 修改WordPress配置文件8. 公網域名訪問WordPress總結 前言 在數字化浪潮中&#xff0c;傳統網站搭建方式正面臨前所未…

ComfyUI+阿里Wan2.1+內網穿透技術:本地AI視頻生成系統搭建實戰

文章目錄 前言1.軟件準備1.1 ComfyUI1.2 文本編碼器1.3 VAE1.4 視頻生成模型 2.整合配置3. 本地運行測試4. 公網使用Wan2.1模型生成視頻4.1 創建遠程連接公網地址 5. 固定遠程訪問公網地址總結 前言 各位技術愛好者&#xff0c;今天為您帶來一組創新性的AI應用方案&#xff01…

n8n:技術團隊的智能工作流自動化助手

在當前數字化時代,自動化已經成為提高效率和減輕人工工作負擔的一大推動力。今天,我們要為大家介紹一款極具潛力的開源項目——n8n,它不僅擁有廣泛的應用場景,還具備內置AI功能,能夠完全滿足技術團隊的高效工作需求。n8n的出現,為技術團隊提供了自由編程與快速自動化構建…

1,QT的編譯教程

目錄 整體流程: 1,新建project文件 2,編寫源代碼 3,打開QT的命令行窗口 4,生成工程文件(QT_demo.pro) 5,生成Make file 6,編譯工程 7,運行編譯好的可執行文件 整體流程: 1,新建project文件 新建文本文件,后綴改為.cpp 2,編寫源代碼

深度學習論文: FastVLM: Efficient Vision Encoding for Vision Language Models

深度學習論文: FastVLM: Efficient Vision Encoding for Vision Language Models FastVLM: Efficient Vision Encoding for Vision Language Models PDF: https://www.arxiv.org/abs/2412.13303 PyTorch代碼: https://github.com/shanglianlm0525/CvPytorch PyTorch代碼: https…

十一、【核心功能篇】測試用例管理:設計用例新增編輯界面

【核心功能篇】測試用例管理&#xff1a;設計用例新增&編輯界面 前言準備工作第一步&#xff1a;創建測試用例相關的 API 服務 (src/api/testcase.ts)第二步&#xff1a;創建測試用例編輯頁面組件 (src/views/testcase/TestCaseEditView.vue)第三步&#xff1a;配置測試用例…

三、web安全-信息收集

1、信息搜集的重要性 &#xff08;1&#xff09;明確攻擊面 信息搜集能讓滲透測試人員清晰地勾勒出目標系統的邊界&#xff0c;包括其網絡拓撲結構、開放的服務端口、運行的軟件系統等。例如&#xff0c;通過信息搜集發現目標企業除了對外提供官網服務外&#xff0c;還有一個…

生活小記啊

最近生活上的事情還是蠻多的&#xff0c;想到哪寫到哪。 工作 三月的某個周六&#xff0c;正在加班寫技術方案&#xff0c;大晚上寫完了聽到調動通知&#xff0c;要去新的團隊了。 還是蠻不舍的&#xff0c;看著產品從無到有&#xff0c;一路走過來&#xff0c;傾注了不少感…

vue-08(使用slot進行靈活的組件渲染)

使用slot進行靈活的組件渲染 作用域slot是 Vue.js 中的一種強大機制&#xff0c;它允許父組件自定義子組件內容的呈現。與僅向下傳遞數據的常規 props 不同&#xff0c;作用域 slot 為父級提供了一個模板&#xff0c;然后子級可以填充數據。這提供了高度的靈活性和可重用性&am…

MySQL索引與性能優化入門:讓查詢提速的秘密武器【MySQL系列】

本文將深入講解 MySQL 索引的底層原理、常見類型、使用技巧&#xff0c;并結合 EXPLAIN 工具分析查詢執行計劃&#xff0c;配合慢查詢日志識別瓶頸&#xff0c;逐步建立起系統的 MySQL 查詢優化知識體系。適合有一定基礎、希望在數據量增長或面試中脫穎而出的開發者閱讀。 一、…

C 語言開發中常見的開發環境

目錄 1.Dev-C 2.Visual Studio Code 3.虛擬機 Linux 環境 4.嵌入式 MCU 專用開發環境 1.Dev-C 使用集成的 C/C 開發環境&#xff08;適合基礎學習&#xff09;,下載鏈接Dev-C下載 - 官方正版 - 極客應用 2.Visual Studio Code 結合 C/C 擴展 GCC/MinGW 編譯器&#xff0c…

STM32G4 電機外設篇(二) VOFA + ADC + OPAMP

目錄 一、STM32G4 電機外設篇&#xff08;二&#xff09; VOFA ADC OPAMP1 VOFA1.1 VOFA上位機顯示波形 2 ADC2.1 用ADC規則組對板載電壓和電位器進行采樣 3 OPAMP&#xff08;運放&#xff09;3.1 結合STM32內部運放和ADC來完成對三相電流的采樣3.2 運放電路分析 附學習參考…

再見Notepad++,你好Notepad--

Notepad-- 是一款國產開源的輕量級、跨平臺文本編輯器&#xff0c;支持 Window、Linux、macOS 以及國產 UOS、麒麟等操作系統。 除了具有常用編輯器的功能之外&#xff0c;Notepad-- 還內置了專業級的代碼對比功能&#xff0c;支持文件、文件夾、二進制文件的比對&#xff0c;支…

跳動的愛心

跳動的心形圖案&#xff0c;通過字符打印和延時效果模擬跳動&#xff0c;心形在兩種大小間交替跳動。 通過數學公式生成心形曲線 #include <stdio.h> #include <windows.h> // Windows 系統頭文件&#xff08;用于延時和清屏&#xff09; void printHeart(int …

2.2HarmonyOS NEXT高性能開發技術:編譯優化、內存管理與并發編程實踐

HarmonyOS NEXT高性能開發技術&#xff1a;編譯優化、內存管理與并發編程實踐 在HarmonyOS NEXT全場景設備開發中&#xff0c;高性能是跨端應用體驗的核心保障。本章節聚焦ArkCompiler編譯優化、內存管理工具及多線程并發編程三大技術模塊&#xff0c;結合實戰案例解析底層實現…