Enviar búsqueda
Cargar
CH09:Collection與Map
•
0 recomendaciones
•
295 vistas
Justin Lin
Seguir
認識Collection與Map架構 使用Collection與Map實作 對收集之物件進行排序 簡介Lambda表示式 簡介泛型語法
Leer menos
Leer más
Viajes
Denunciar
Compartir
Denunciar
Compartir
1 de 87
Descargar ahora
Descargar para leer sin conexión
Recomendados
CH11:執行緒與並行API
CH11:執行緒與並行API
Justin Lin
CH04:認識物件
CH04:認識物件
Justin Lin
CH12:Lambda
CH12:Lambda
Justin Lin
CH1:Java平台概論
CH1:Java平台概論
Justin Lin
CH02:從JDK到IDE
CH02:從JDK到IDE
Justin Lin
Java SE 8 技術手冊第 4 章 - 認識物件
Java SE 8 技術手冊第 4 章 - 認識物件
Justin Lin
Ch13 整合 Spring MVC/Security
Ch13 整合 Spring MVC/Security
Justin Lin
Java SE 8 技術手冊第 12 章 - Lambda
Java SE 8 技術手冊第 12 章 - Lambda
Justin Lin
Recomendados
CH11:執行緒與並行API
CH11:執行緒與並行API
Justin Lin
CH04:認識物件
CH04:認識物件
Justin Lin
CH12:Lambda
CH12:Lambda
Justin Lin
CH1:Java平台概論
CH1:Java平台概論
Justin Lin
CH02:從JDK到IDE
CH02:從JDK到IDE
Justin Lin
Java SE 8 技術手冊第 4 章 - 認識物件
Java SE 8 技術手冊第 4 章 - 認識物件
Justin Lin
Ch13 整合 Spring MVC/Security
Ch13 整合 Spring MVC/Security
Justin Lin
Java SE 8 技術手冊第 12 章 - Lambda
Java SE 8 技術手冊第 12 章 - Lambda
Justin Lin
Ch09 整合資料庫
Ch09 整合資料庫
Justin Lin
Ch05 Servlet 進階 API、過濾器與傾聽器
Ch05 Servlet 進階 API、過濾器與傾聽器
Justin Lin
Java SE 8 技術手冊第 14 章 - NIO 與 NIO2
Java SE 8 技術手冊第 14 章 - NIO 與 NIO2
Justin Lin
Ch12 Spring 起步走
Ch12 Spring 起步走
Justin Lin
Inversion of Control - Introduction and Best Practice
Inversion of Control - Introduction and Best Practice
Lars-Erik Kindblad
Ch07 使用 JSTL
Ch07 使用 JSTL
Justin Lin
CH1. 簡介 Web 應用程式
CH1. 簡介 Web 應用程式
Justin Lin
Ch03 請求與回應
Ch03 請求與回應
Justin Lin
Dependency injection ppt
Dependency injection ppt
Swati Srivastava
Entity framework code first
Entity framework code first
Confiz
Ch06 使用 JSP
Ch06 使用 JSP
Justin Lin
Introduction to spring boot
Introduction to spring boot
Santosh Kumar Kar
OCHaCafe#5 - 避けては通れない!認証・認可
OCHaCafe#5 - 避けては通れない!認証・認可
オラクルエンジニア通信
ADO.NET Entity Framework
ADO.NET Entity Framework
Doncho Minkov
Building a REST Service in minutes with Spring Boot
Building a REST Service in minutes with Spring Boot
Omri Spector
Spring mvc
Spring mvc
Pravin Pundge
Java SE 8 技術手冊第 9 章 - Collection與Map
Java SE 8 技術手冊第 9 章 - Collection與Map
Justin Lin
Spring core module
Spring core module
Raj Tomar
Functional Application Logging : Code Examples Using Spring Boot and Logback
Functional Application Logging : Code Examples Using Spring Boot and Logback
Mohammad Sabir Khan
Ch02 撰寫與設定 Servlet
Ch02 撰寫與設定 Servlet
Justin Lin
Collection與Map
Collection與Map
Justin Lin
Java SE 7 技術手冊投影片第 09 章 - Collection與Map
Java SE 7 技術手冊投影片第 09 章 - Collection與Map
Justin Lin
Más contenido relacionado
La actualidad más candente
Ch09 整合資料庫
Ch09 整合資料庫
Justin Lin
Ch05 Servlet 進階 API、過濾器與傾聽器
Ch05 Servlet 進階 API、過濾器與傾聽器
Justin Lin
Java SE 8 技術手冊第 14 章 - NIO 與 NIO2
Java SE 8 技術手冊第 14 章 - NIO 與 NIO2
Justin Lin
Ch12 Spring 起步走
Ch12 Spring 起步走
Justin Lin
Inversion of Control - Introduction and Best Practice
Inversion of Control - Introduction and Best Practice
Lars-Erik Kindblad
Ch07 使用 JSTL
Ch07 使用 JSTL
Justin Lin
CH1. 簡介 Web 應用程式
CH1. 簡介 Web 應用程式
Justin Lin
Ch03 請求與回應
Ch03 請求與回應
Justin Lin
Dependency injection ppt
Dependency injection ppt
Swati Srivastava
Entity framework code first
Entity framework code first
Confiz
Ch06 使用 JSP
Ch06 使用 JSP
Justin Lin
Introduction to spring boot
Introduction to spring boot
Santosh Kumar Kar
OCHaCafe#5 - 避けては通れない!認証・認可
OCHaCafe#5 - 避けては通れない!認証・認可
オラクルエンジニア通信
ADO.NET Entity Framework
ADO.NET Entity Framework
Doncho Minkov
Building a REST Service in minutes with Spring Boot
Building a REST Service in minutes with Spring Boot
Omri Spector
Spring mvc
Spring mvc
Pravin Pundge
Java SE 8 技術手冊第 9 章 - Collection與Map
Java SE 8 技術手冊第 9 章 - Collection與Map
Justin Lin
Spring core module
Spring core module
Raj Tomar
Functional Application Logging : Code Examples Using Spring Boot and Logback
Functional Application Logging : Code Examples Using Spring Boot and Logback
Mohammad Sabir Khan
Ch02 撰寫與設定 Servlet
Ch02 撰寫與設定 Servlet
Justin Lin
La actualidad más candente
(20)
Ch09 整合資料庫
Ch09 整合資料庫
Ch05 Servlet 進階 API、過濾器與傾聽器
Ch05 Servlet 進階 API、過濾器與傾聽器
Java SE 8 技術手冊第 14 章 - NIO 與 NIO2
Java SE 8 技術手冊第 14 章 - NIO 與 NIO2
Ch12 Spring 起步走
Ch12 Spring 起步走
Inversion of Control - Introduction and Best Practice
Inversion of Control - Introduction and Best Practice
Ch07 使用 JSTL
Ch07 使用 JSTL
CH1. 簡介 Web 應用程式
CH1. 簡介 Web 應用程式
Ch03 請求與回應
Ch03 請求與回應
Dependency injection ppt
Dependency injection ppt
Entity framework code first
Entity framework code first
Ch06 使用 JSP
Ch06 使用 JSP
Introduction to spring boot
Introduction to spring boot
OCHaCafe#5 - 避けては通れない!認証・認可
OCHaCafe#5 - 避けては通れない!認証・認可
ADO.NET Entity Framework
ADO.NET Entity Framework
Building a REST Service in minutes with Spring Boot
Building a REST Service in minutes with Spring Boot
Spring mvc
Spring mvc
Java SE 8 技術手冊第 9 章 - Collection與Map
Java SE 8 技術手冊第 9 章 - Collection與Map
Spring core module
Spring core module
Functional Application Logging : Code Examples Using Spring Boot and Logback
Functional Application Logging : Code Examples Using Spring Boot and Logback
Ch02 撰寫與設定 Servlet
Ch02 撰寫與設定 Servlet
Similar a CH09:Collection與Map
Collection與Map
Collection與Map
Justin Lin
Java SE 7 技術手冊投影片第 09 章 - Collection與Map
Java SE 7 技術手冊投影片第 09 章 - Collection與Map
Justin Lin
關聯式資料庫系統的規劃
關聯式資料庫系統的規劃
Simon Huang
Java SE 7 技術手冊投影片第 14 章 - 整合資料庫
Java SE 7 技術手冊投影片第 14 章 - 整合資料庫
Justin Lin
搜索技术分享
搜索技术分享
endless_yy
No sql
No sql
Department of Information Management Ming Chuan University, Taiwan
flagboot learning framework technology sharing
flagboot learning framework technology sharing
xastraxastra
喬叔 Elasticsearch Index 管理技巧與效能優化
喬叔 Elasticsearch Index 管理技巧與效能優化
Joe Wu
My scala learning note for TWJUG
My scala learning note for TWJUG
Ian Tsai
4. 使用物件
4. 使用物件
Justin Lin
Java_06:Collection
Java_06:Collection
Brad Chao
9. 資料結構
9. 資料結構
Justin Lin
Elastic stack day-1
Elastic stack day-1
YI-CHING WU
開放原始碼 Ch2.4 app - oss - db (ver 1.0)
開放原始碼 Ch2.4 app - oss - db (ver 1.0)
My own sweet home!
8. 常用標準API
8. 常用標準API
Justin Lin
ElasticSearch Training#2 (advanced concepts)-ESCC#1
ElasticSearch Training#2 (advanced concepts)-ESCC#1
medcl
CH16:整合資料庫
CH16:整合資料庫
Justin Lin
Json ld 簡介
Json ld 簡介
bobo52310
Similar a CH09:Collection與Map
(18)
Collection與Map
Collection與Map
Java SE 7 技術手冊投影片第 09 章 - Collection與Map
Java SE 7 技術手冊投影片第 09 章 - Collection與Map
關聯式資料庫系統的規劃
關聯式資料庫系統的規劃
Java SE 7 技術手冊投影片第 14 章 - 整合資料庫
Java SE 7 技術手冊投影片第 14 章 - 整合資料庫
搜索技术分享
搜索技术分享
No sql
No sql
flagboot learning framework technology sharing
flagboot learning framework technology sharing
喬叔 Elasticsearch Index 管理技巧與效能優化
喬叔 Elasticsearch Index 管理技巧與效能優化
My scala learning note for TWJUG
My scala learning note for TWJUG
4. 使用物件
4. 使用物件
Java_06:Collection
Java_06:Collection
9. 資料結構
9. 資料結構
Elastic stack day-1
Elastic stack day-1
開放原始碼 Ch2.4 app - oss - db (ver 1.0)
開放原始碼 Ch2.4 app - oss - db (ver 1.0)
8. 常用標準API
8. 常用標準API
ElasticSearch Training#2 (advanced concepts)-ESCC#1
ElasticSearch Training#2 (advanced concepts)-ESCC#1
CH16:整合資料庫
CH16:整合資料庫
Json ld 簡介
Json ld 簡介
Más de Justin Lin
Ch14 簡介 Spring Boot
Ch14 簡介 Spring Boot
Justin Lin
Ch11 簡介 JavaMail
Ch11 簡介 JavaMail
Justin Lin
Ch10 Web 容器安全管理
Ch10 Web 容器安全管理
Justin Lin
Ch08 自訂標籤
Ch08 自訂標籤
Justin Lin
Ch04 會話管理
Ch04 會話管理
Justin Lin
14. 進階主題
14. 進階主題
Justin Lin
13.並行、平行與非同步
13.並行、平行與非同步
Justin Lin
12. 除錯、測試與效能
12. 除錯、測試與效能
Justin Lin
11. 常用內建模組
11. 常用內建模組
Justin Lin
10. 資料永續與交換
10. 資料永續與交換
Justin Lin
8. open() 與 io 模組
8. open() 與 io 模組
Justin Lin
7. 例外處理
7. 例外處理
Justin Lin
6. 類別的繼承
6. 類別的繼承
Justin Lin
5. 從模組到類別
5. 從模組到類別
Justin Lin
4. 流程語法與函式
4. 流程語法與函式
Justin Lin
3.型態與運算子
3.型態與運算子
Justin Lin
1. Python起步走
1. Python起步走
Justin Lin
2. 從 REPL 到 IDE
2. 從 REPL 到 IDE
Justin Lin
Python 3.9 技術手冊目錄
Python 3.9 技術手冊目錄
Justin Lin
CH19:深入模組化
CH19:深入模組化
Justin Lin
Más de Justin Lin
(20)
Ch14 簡介 Spring Boot
Ch14 簡介 Spring Boot
Ch11 簡介 JavaMail
Ch11 簡介 JavaMail
Ch10 Web 容器安全管理
Ch10 Web 容器安全管理
Ch08 自訂標籤
Ch08 自訂標籤
Ch04 會話管理
Ch04 會話管理
14. 進階主題
14. 進階主題
13.並行、平行與非同步
13.並行、平行與非同步
12. 除錯、測試與效能
12. 除錯、測試與效能
11. 常用內建模組
11. 常用內建模組
10. 資料永續與交換
10. 資料永續與交換
8. open() 與 io 模組
8. open() 與 io 模組
7. 例外處理
7. 例外處理
6. 類別的繼承
6. 類別的繼承
5. 從模組到類別
5. 從模組到類別
4. 流程語法與函式
4. 流程語法與函式
3.型態與運算子
3.型態與運算子
1. Python起步走
1. Python起步走
2. 從 REPL 到 IDE
2. 從 REPL 到 IDE
Python 3.9 技術手冊目錄
Python 3.9 技術手冊目錄
CH19:深入模組化
CH19:深入模組化
CH09:Collection與Map
1.
1
2.
Collection與Map 學習目標 • 認識Collection與Map架構 • 使用Collection與Map實作 •
對收集之物件進行排序 • 簡介Lambda表示式 • 簡介泛型語法 2
3.
認識Collection架構 3
4.
• 依需求使用不同的介面實作物件 4
5.
• 只表示感興趣的介面或類別 5
6.
具有索引的List 6
7.
7
8.
java.util.ArrayList • 使用Object陣列來保存收集之物件 • 使用索引隨機存取時速度快 •
若需要調整索引順序時,會有較差的表現 • 陣列長度固定也是要考量的問題 • 有個可指定容量(Capacity)的建構式 8
9.
LinkedList 9
10.
10
11.
11
12.
12
13.
• 每次add()物件時,才會建立新的Node來保 存物件,不會事先耗費記憶體 • 指定索引隨機存取物件時,會比較沒有效率 •
有利於調整索引順序 13
14.
內容不重複的Set 14
15.
• Set沒有將重複的學生資料排除 15
16.
• 你沒有告訴Set,什麼樣的Student實例才 算是重複 • 以HashSet為例 16
17.
17
18.
• 許多場合要判斷物件是否重複時,都會呼叫 hashCode()與equals()方法 • 因此規格書中建議,兩個方法要同時實作 18
19.
19
20.
支援佇列操作的Queue • 定義了offer()、poll()與peek()等方法 • 操作失敗時會傳回特定值 20
21.
21
22.
• Queue的子介面Deque 22
23.
23
24.
24
25.
使用泛型 25
26.
26
27.
• 對API設計者造成一些語法上的麻煩,但對客 戶端會多一些友善 27
28.
• Collection API支援泛型語法 •
沒有指定型態參數實際型態,程式碼中出現 型態參數的地方,就會回歸為使用Object 28
29.
• 有一部份是編譯器蜜糖 29
30.
• 以下會編譯錯誤: 30
31.
• 有個介面宣告若是如下: 31
32.
• 如果不指定T的實際型態,那麼T出現的位置 就回歸為使用Object 32
33.
• JDK7以後有了點改善 • Java
SE 10以後 33
34.
• 也可以只在方法上定義泛型 • 若能將elemOf()設計為泛型方法 34
35.
簡介Lambda表示式 • 匿名類別語法實作Request介面並建立實例 • 可以使用JDK8新增的Lambda表示式 35
36.
• 如果有個介面宣告如下: 36
37.
• 可以用泛型宣告的型態作為資訊來源 37
38.
• 從JDK9開始 • Java
SE 10 38
39.
• 使用Lambda語法來實作 39
40.
40
41.
• 不鼓勵使用Lambda表示式來寫複雜的演算 • 不過若流程較為複雜,可以使用區塊{}符號 包括演算流程 41
42.
Iterable與Iterator • 寫個forEach()方法,可以顯示List收集 的物件 42
43.
• 實作一個forEach()方法,可以顯示Queue 收集的物件 43
44.
• iterator()方法在JDK5出現前,是定義在 Collection介面 • JDK5以後提昇至java.lang.Iterable 44
45.
• 增強式for迴圈,運用在陣列、實作 Iterable介面的物件, 45
46.
• 增強式for迴圈是編譯器蜜糖 46
47.
• JDK8以後的版本,Iterable新增了 forEach()方法 47
48.
Comparable與Comparator 48
49.
49
50.
• 將var改為List,雖然可以通過編譯,然而 執行時會拋出ClassCastException? 50
51.
實作Comparable 51
52.
• Integer實作了Comparable介面: 52
53.
實作Comparator • String本身有實作Comparable 53
54.
• Collections的sort()方法有另一個重載 版本,可接受java.util.Comparator 54
55.
• java.util.TreeSet • java.util.PriorityQueue 55
56.
• 可以使用Lambda語法讓它更簡潔一些: • JDK8也在List增加了sort()方法 56
57.
• 若有個List某些索引處包括null,現在打 算讓null排在最前頭,之後依字串長度由大 到小排序,那會怎麼寫? 57
58.
58
59.
• JDK8以後 59
60.
常用Map實作類別 • 根據某鍵(Key)來取得對應的值(Value) 60
61.
使用HashMap 61
62.
使用TreeMap • 鍵的部份會排序,條件是作為鍵的物件必須 實作Comparable介面 • 或是建構TreeMap時,指定實作 Comparator介面的物件 62
63.
63
64.
使用Properties • 繼承HashTable,HashTable實作了Map 64
65.
• 從檔案中讀取屬性 65
66.
• 也可以使用loadFromXML()方法 66
67.
• 使用java指令啟動JVM時,可以使用-D指 定系統屬性 67
68.
68
69.
走訪Map鍵值 69
70.
70
71.
71
72.
淺談不可變特性 • 在純函數式語言中(像是Haskell),x =
1 • x就是1,1的名稱(而不是變數)就是x,不 會再是其他的東西 • 在Java中想使用變數來模仿不可變特性,通 常會把變數加上final修飾 72
73.
副作用(Side effect) • 具有副作用的方法會改變物件狀態 –
Collections的sort() – List本身的add()方法 • 程式語言本身有變數的概念,在撰寫時就容 易調整變數值,也就容易調整物件狀態,也 就易於變更整個系統狀態 73
74.
• 副作用是個雙面刃 • 在一個設計不良的系統中,若沒有適當地控 管副作用,追蹤物件狀態會越來越困難 •
如果變數不可變,設計出來的方法就不會有 副作用,物件狀態也不可變 74
75.
• 不可變物件(Immutable object)有許多好處 –
並行(Concurrent)程式設計時,不用擔心執行 緒共用競爭的問題 – 共用資料結構,達到節省時間及空間之目的 75
76.
• Java畢竟不是以函數式為主要典範 • 看看Collection介面就知道了 –
有些方法操作都是選用的 – 若不打算提供實作的方法,可以丟出 UnsupportedOperationException – 實作物件必須在文件上指明,支援哪些操作 76
77.
• 有時在設計上,為了限制副作用的發生,會 希望某些物件具有不可變的特性 • 以便易於掌握物件狀態,從而易於掌握系統 某些部份的狀態 77
78.
• 在JDK8以前,會透過Collections的 static方法: – unmodifiableCollection() –
unmodifiableList() – unmodifiableSet() – unmodifiableMap() • 取得一個無法修改的(unmodifiable)物件 • JDK9以後在List、Set、Map提供了of() 方法,用以建立不可變的List、Set或Map 實作物件 78
79.
unmodifiableXXX()方法 79
80.
• 傳回的物件只是無法修改(Unmodifiable) ,也就是僅僅不支援修改操作罷了 • 傳回的物件是不可修改,而非不可變動 80
81.
List、Set、Map的of()方法 81
82.
• 會建立不可變物件,不能對它們呼叫有副作 用的方法,否則會拋出 UnsupportedOperationException 82
83.
83
84.
• 不會參考至原elements參考之陣列 84
85.
• 元素是淺層複製 85
86.
• 如果想要更進一步的不可變特性,應該令 Student類別在定義時也支援不可變特性 86
87.
• Arrays.asList()方法 87
Descargar ahora