Kotlin 數據容器 - MutableList(MutableList 概述、MutableList 增刪改查、MutableList 遍歷元素)

一、MutableList 概述

  1. MutableList 是 Kotlin 中可變的列表接口,它繼承自 List 接口并添加了修改列表內容的方法

  2. MutableList 允許添加、刪除、更新元素


二、創建 MutableList

1、基礎創建
  1. 使用 mutableListOf 函數
// 創建一個 MutableList,包含 4 個元素
val nums = mutableListOf(1, 2, 3, 4)println("nums: $nums")
# 輸出結果nums: [1, 2, 3, 4]
  1. 使用 MutableList 函數
// 創建一個 MutableList,包含 5 個元素,基于索引計算每個元素的值
val nums = MutableList(5) { it * 2 }println("nums: $nums")
# 輸出結果nums: [0, 2, 4, 6, 8]
  1. 使用 ArrayList 構造函數
val nums = ArrayList<Int>()
nums.add(1)
nums.add(2)
nums.add(3)println("nums: $nums")
# 輸出結果nums: [1, 2, 3]
2、創建空 MutableList
  1. 使用 mutableListOf 函數
val emptyList = mutableListOf<String>()println("emptyList: $emptyList")
# 輸出結果emptyList: []
  1. 使用 MutableList 函數
val emptyList = MutableList(0) { it }println("emptyList: $emptyList")
# 輸出結果emptyList: []
  1. 使用 ArrayList 構造函數
// 指定初始容量為 5
val nums1 = ArrayList<Int>(5)println("nums1: $nums1")val nums2 = ArrayList<Int>()println("nums2: $nums2")
# 輸出結果nums1: []
nums2: []

三、MutableList 添加元素

  1. 添加單個元素
val fruits = mutableListOf("Apple", "Banana")println("fruits: $fruits")// 在末尾添加元素
fruits.add("Orange")println("fruits: $fruits")// 在指定位置添加元素
fruits.add(1, "Grape")println("fruits: $fruits")
# 輸出結果fruits: [Apple, Banana]
fruits: [Apple, Banana, Orange]
fruits: [Apple, Grape, Banana, Orange]
  1. 添加多個元素
val fruits = mutableListOf("Apple", "Banana")println("fruits: $fruits")// 在末尾添加多個元素
fruits.addAll(listOf("Mango", "Peach"))println("fruits: $fruits")// 在指定位置添加多個元素
fruits.addAll(2, listOf("Lemon", "Kiwi"))println("fruits: $fruits")
# 輸出結果fruits: [Apple, Banana]
fruits: [Apple, Banana, Mango, Peach]
fruits: [Apple, Banana, Lemon, Kiwi, Mango, Peach]

四、MutableList 刪除元素

  1. 按值刪除元素
val nums = mutableListOf(1, 2, 3, 4, 5, 2)println("nums: $nums")nums.remove(2)println("nums: $nums")
# 輸出結果nums: [1, 2, 3, 4, 5, 2]
nums: [1, 3, 4, 5, 2]
  1. 按索引刪除元素
val nums = mutableListOf(1, 2, 3, 4, 5, 2)println("nums: $nums")nums.removeAt(2)println("nums: $nums")
# 輸出結果nums: [1, 2, 3, 4, 5, 2]
nums: [1, 2, 4, 5, 2]
  1. 刪除所有匹配元素
val nums = mutableListOf(1, 2, 3, 4, 5, 2)println("nums: $nums")nums.removeAll(listOf(4, 2))println("nums: $nums")
# 輸出結果nums: [1, 2, 3, 4, 5, 2]
nums: [1, 3, 5]
  1. 刪除所有元素
val nums = mutableListOf(1, 2, 3, 4, 5, 2)println("nums: $nums")nums.clear()println("nums: $nums")
# 輸出結果nums: [1, 2, 3, 4, 5, 2]
nums: []
  1. 保留指定元素,刪除其余元素
val letters = mutableListOf('a', 'b', 'c', 'd')println("letters: $letters")letters.retainAll(listOf('a', 'c'))println("letters: $letters")
# 輸出結果letters: [a, b, c, d]
letters: [a, c]

五、MutableList 訪問元素

1、基礎訪問
  • 使用 [] 操作符與 get 方法
val colors = mutableListOf("紅", "綠", "藍")val first = colors[0]
val second = colors.get(1)println("first: $first")
println("second: $second")
# 輸出結果first: 紅
second: 綠
  • 它們都會拋出索引越界異常
val colors = mutableListOf("紅", "綠", "藍")val result = colors[10]println("result: $result")
# 輸出結果java.lang.IndexOutOfBoundsException: Index 10 out of bounds for length 3
val colors = mutableListOf("紅", "綠", "藍")val result = colors.get(10)println("result: $result")
# 輸出結果java.lang.IndexOutOfBoundsException: Index 10 out of bounds for length 3
2、安全訪問
(1)基本介紹
方法說明
firstOrNull返回 List 的第一個元素,如果 List 為空則返回 null
lastOrNull返回 List 的最后一個元素,如果 List 為空則返回 null
getOrNull返回指定索引的元素,如果索引超出范圍則返回 null
getOrElse返回指定索引的元素,如果索引超出范圍則返回默認值
(2)演示
val colors = mutableListOf("紅", "綠", "藍")val result1 = colors.firstOrNull()
val result2 = colors.lastOrNull()
val result3 = colors.getOrNull(5)
val result4 = colors.getOrElse(5) { "默認顏色" }println("result1: $result1")
println("result2: $result2")
println("result3: $result3")
println("result4: $result4")
# 輸出結果result1: 紅
result2: 藍
result3: null
result4: 默認顏色
val colors = mutableListOf<String>()val result1 = colors.firstOrNull()
val result2 = colors.lastOrNull()
val result3 = colors.getOrNull(5)
val result4 = colors.getOrElse(5) { "默認顏色" }println("result1: $result1")
println("result2: $result2")
println("result3: $result3")
println("result4: $result4")
# 輸出結果result1: null
result2: null
result3: null
result4: 默認顏色
3、條件檢索
val colors = mutableListOf("red", "green", "blue", "yellow")// 找到第一個符合條件的
val result1 = colors.first { it.length >= 5 }// 找到最后一個符合條件的
val result2 = colors.last { it.length == 4 }println("result1: $result1")
println("result2: $result2")
# 輸出結果result1: green
result2: blue

六、MutableList 修改元素

  1. 使用 [] 操作符
val items = mutableListOf("one", "two", "three")println("items: $items")items[1] = "2"println("items: $items")
# 輸出結果items: [one, two, three]
items: [one, 2, three]
  1. 使用 set 方法
val items = mutableListOf("one", "two", "three")println("items: $items")items.set(2, "3")println("items: $items")
# 輸出結果items: [one, two, three]
items: [one, two, 3]

七、MutableList 遍歷元素

1、for 循環(推薦)
  1. 遍歷元素
val items = mutableListOf("one", "two", "three")for (item in items) {println(item)
}
# 輸出結果one
two
three
  1. 遍歷索引
val items = mutableListOf("one", "two", "three")for (i in items.indices) {println("Index $i: ${items[i]}")
}
# 輸出結果Index 0: one
Index 1: two
Index 2: three
2、使用 forEach 方法(推薦)
val items = mutableListOf("one", "two", "three")items.forEach { println(it) }
# 輸出結果one
two
three
val items = mutableListOf("one", "two", "three")items.forEach { item ->println(item)
}
# 輸出結果one
two
three
3、使用 forEachIndexed 方法(推薦)
val items = mutableListOf("one", "two", "three")items.forEachIndexed { index, item ->println("Index $index: $item")
}
# 輸出結果Index 0: one
Index 1: two
Index 2: three
4、使用迭代器
val items = mutableListOf("one", "two", "three")val iterator = items.iterator()while (iterator.hasNext()) {println(iterator.next())
}
# 輸出結果one
two
three
5、使用 withIndex 方法
val colors = mutableListOf("紅", "綠", "藍")for ((index, value) in colors.withIndex()) {println("$index: $value")
}
# 輸出結果0: 紅
1: 綠
2: 藍
6、使用 List.size + get 方法
val fruitList = mutableListOf("Apple", "Banana", "Orange")for (i in 0 until fruitList.size) {println(fruitList.get(i))
}
# 輸出結果Apple
Banana
Orange

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

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

相關文章

數據庫規范化:消除冗余與異常的核心法則

規范化&#xff08;Normalization&#xff09; 是數據庫設計中的核心流程&#xff0c;旨在通過結構化表與字段&#xff0c;消除數據冗余和避免數據異常&#xff08;插入/更新/刪除異常&#xff09;&#xff0c;同時確保數據依賴合理。其核心方法是將大表拆分為多個小表&#xf…

AI繪畫與攝影新紀元:ChatGPT+Midjourney+文心一格 共繪夢幻世界

文章目錄一、AI藝術的新時代二、ChatGPT&#xff1a;創意的引擎與靈感的火花三、Midjourney&#xff1a;圖像生成的魔法與技術的奇跡四、文心一格&#xff1a;藝術的升華與情感的共鳴五、融合創新&#xff1a;AI繪畫與攝影實戰的無限可能六、應用場景與實踐案例AI藝術的美好未來…

如何衡量需求的緊急程度

衡量需求的緊急程度&#xff0c;其核心在于建立一套客觀、量化、且基于商業影響的評估框架&#xff0c;從而將干系人主觀的“緊迫感”&#xff0c;轉化為團隊可進行理性決策的“優先級數據”。一套行之有效的緊急程度衡量體系&#xff0c;其構建必須綜合考量五大關鍵維度&#…

setInterval的任務正在執行時,setTimeout的任務會等待前者完成后再執行,這樣會造成2個計時器的時間精度出錯?

setInterval&#xff0c;setTimeout 2種計時器在同一個頁面處理任務&#xff0c;想看下精度用時情況。setInterval的任務正在執行時&#xff0c;setTimeout的任務會等待前者完成后再執行&#xff0c;這樣會造成2個計時器的時間精度出錯&#xff1f;本來settimeout啟動0.5秒&…

DeepSeek-R1-0528 推理模型完整指南:領先開源推理模型的運行平臺與選擇建議

每周跟蹤AI熱點新聞動向和震撼發展 想要探索生成式人工智能的前沿進展嗎&#xff1f;訂閱我們的簡報&#xff0c;深入解析最新的技術突破、實際應用案例和未來的趨勢。與全球數同行一同&#xff0c;從行業內部的深度分析和實用指南中受益。不要錯過這個機會&#xff0c;成為AI領…

【AI實戰】從零開始微調Qwen2-VL模型:打造制造業智能安全巡檢系統

【AI實戰】從零開始微調Qwen2-VL模型&#xff1a;打造制造業智能安全巡檢系統&#x1f3af; 項目背景與目標&#x1f6e0; 環境準備硬件要求軟件環境搭建&#x1f4ca; 數據準備&#xff1a;構建高質量訓練集第一步&#xff1a;提取規章制度知識第二步&#xff1a;創建標注數據…

5 重復匹配

在前幾章里&#xff0c;我們學習了如何使用各種元字符和特殊的字符集合去匹配單個字符。本章將學習如何匹配多個連續重復出現的字符或字符集合。5.1 有多少個匹配你現在已經學會了正則表達式的模式匹配中的基礎知識&#xff0c;但目前所有的例子都有一個非常嚴重的局限。請大家…

【瀏覽器兼容性處理】

瀏覽器兼容性處理是前端開發中重要的一環&#xff0c;指解決不同瀏覽器&#xff08;或同一瀏覽器不同版本&#xff09;對HTML、CSS、JavaScript解析執行存在差異&#xff0c;導致頁面顯示異常或功能失效的問題。以下是常見問題及系統的處理方案&#xff1a; 一、常見兼容性問題…

Android組件化實現方案深度分析

組件化是解決大型應用代碼臃腫、耦合嚴重、編譯緩慢、團隊協作困難等問題的關鍵架構手段&#xff0c;其核心在于 模塊化拆分、解耦、獨立開發和按需集成。 一、 組件化的核心目標與價值 解耦與高內聚&#xff1a; 將龐大單體應用拆分為功能獨立、職責單一的模塊&#xff08;組件…

外賣:重構餐飲的線上服務密碼

外賣不是 “把堂食菜裝進盒子送出去”&#xff0c;而是 “用線上化服務重構餐飲與用戶連接” 的經營模式 —— 它的核心&#xff0c;是 “讓用戶在家也能吃到‘像在店里一樣好’的體驗”。一、外賣的底層邏輯用戶點外賣&#xff0c;本質是 “想在家獲得‘餐廳級體驗’”&#x…

C++——高性能組件

文章目錄一、什么是高性能組件1.1 C 中高性能組件的核心設計原則1.2 常見的 C 高性能組件 / 庫舉例1.3 實現高性能組件的關鍵工具二、定時器2.1 什么是用戶態定時器2.2 為什么要使用用戶態定時器2.3 高性能用戶態定時器的實現原理2.3.1 訓練營2.3.1.1 問題解析2.3.1.2 模擬問答…

【軟考中級網絡工程師】知識點之 UDP 協議:網絡通信中的高效輕騎兵

目錄一、UDP 協議簡介二、UDP 協議特點2.1 無連接性2.2 不可靠性2.3 面向數據報2.4 低開銷2.5 廣播支持三、UDP 協議工作原理3.1 UDP 報文格式3.2 UDP 數據傳輸過程四、UDP 協議應用場景4.1 實時音視頻傳輸4.2 在線游戲4.3 DNS 查詢4.4 其他應用場景五、UDP 與 TCP 對比5.1 可靠…

【Node.js從 0 到 1:入門實戰與項目驅動】2.1 安裝 Node.js 與 npm(Windows/macOS/Linux 系統的安裝步驟)

文章目錄 第 2 章:環境搭建 —— 準備你的開發工具 2.1 安裝 Node.js 與 npm(Windows/macOS/Linux 系統的安裝步驟) 一、通用安裝前檢查 二、Windows 系統安裝步驟 方法 1:通過官方安裝包(推薦) 方法 2:通過 nvm-windows 管理多版本(進階) 三、macOS 系統安裝步驟 方法…

C語言相關簡單數據結構:數據結構概念

目錄 1.需要的儲備知識 2.數據結構相關概念 2.1 什么是數據結構 什么是數據&#xff1f; 什么是結構&#xff1f; 概念&#xff1a; 總結&#xff1a; 2.2 為什么需要數據結構&#xff1f; 結論&#xff1a; C語?語法基礎到數據結構與算法&#xff0c;前?已經掌握并…

Docker 詳細介紹及使用方法

Docker 詳細介紹及使用方法 一、Docker 是什么&#xff1f; Docker 是一種開源的應用容器引擎&#xff0c;基于 Go 語言開發并遵從 Apache 2.0 協議開源。它允許開發者將應用程序及其依賴打包到一個輕量級、可移植的容器中&#xff0c;然后發布到任何流行的 Linux 機器上。Dock…

PHP request文件封裝

1.繼承FormRequest 其中id是路由傳參 name是對象中必填校驗<?phpnamespace App\Http\Requests\Admin\User;use Illuminate\Foundation\Http\FormRequest; use Illuminate\Validation\Rule;class user_info_uptRequest extends FormRequest {public function authorize():…

基于跨平臺的svg組件編寫一個svg編輯器

duxapp 提供了一套跨平臺的 SVG 編輯器組件&#xff0c;支持在多種環境中創建和編輯 SVG 圖形。該編輯器包含以下核心功能&#xff1a; 插入圖片繪制自由路徑添加文本創建基本形狀&#xff08;矩形、圓形、線條等&#xff09;對元素進行移動、縮放和旋轉操作 快速開始 import…

react+echarts實現圖表展示的兩種方法

前言&#xff1a;reactecharts實現圖表展示。1、直接用echarts的插件來實現1&#xff09;安裝npm install echarts2&#xff09;使用1、useEffect是react中集合onload/watch監聽等方法與一體的hook函數&#xff0c;他的第二個參數是空數組&#xff0c;則等同于onload&#xff0…

Apache 服務器基礎配置與虛擬主機部署

Apache 服務器基礎配置與虛擬主機部署 Apache 的核心定位與作用&#xff1a; Apache 的核心功能是處理 HTTP 請求并提供 Web 資源&#xff0c;是客戶端&#xff08;如瀏覽器&#xff09;與 Web 服務器之間的 “中間人”&#xff1a; 接收客戶端通過 HTTP/HTTPS 協議發送的請求…

線性代數 · 矩陣 | 最小多項式

注&#xff1a;本文為 “矩陣 | 最小多項式” 相關合輯。 略作重排&#xff0c;如有內容異常&#xff0c;請看原文。 最小多項式 橘子蜂蜜 于 2019-05-22 22:48:25 發布 根據哈密頓 - 凱萊&#xff08;Hamilton - Cayley&#xff09;定理&#xff0c;任給數域 PPP 上的一個 …