SlideShare a Scribd company logo
1 of 21
單元六
Collection與資料結構
集合架構 Collections Framework
• API: java.util.Collection
• 是一種介面 Interface
• 用來存放所有物件資料的容器物件
► 加入方法: add(物件實體)
► 清除方法: clear()
► 移除方法: remover(物件實體)
► 回傳大小: size()
► 查詢物件: contains(物件實體)
集合架構 Collections Framework
Collection
List
ArrayList LinkedList Vector
Set
HashSet TreeSet
實際操作說明
Set 物件實體的使用
• Set 介面的特性
• 是 java.util.Collection 的子介面
• 無特定的順序性
• 不會有重複物件存放
Set 物件實體的使用
► 樂透號碼產生器
HashSet 類別
► 自然排序法
► 可被比較的物件實體
TreeSet 類別
實際操作說明
List 介面特性
• Index  Value
• 加入的順序性
• Index 為 int
► Index >= 0
► If Index < 0  IndexOutOfBoundsException
• 物件可能重複放進去
List 物件實體的使用
► LinkedList
► ArrayList
常用實作List介面的類別
► Index
► 型別
► 大小長度
與陣列的使用差異
實際操作說明
Map 介面認識
• Key  Value
► Index  Value 的進化
► Key 為物件實體
Key-Value Pairs
Map 物件實體的應用
<<interface>>
MAP
HashTable LinkedHashMap HashMap TreeMap
<<interface>>
SortedMAP
HashMap v.s. Hashtable
HashMap Hashtable
非同步 同步(安全)
效率佳 效率不佳
Key或是Value 可以為null Key或是Value 不可以為null
實際操作說明
Collections類別應用
• Java.util.Collections 類別
► 最後有一個s
► 是類別, 不是介面
► 一堆好用的 static 方法
Arrays 類別
► Set
► List
► Map
► Array
應用遍及於
一堆 Static 方法
Java.Util.Arrays
實際操作說明
基本泛型 Generic 觀念
• 定義類別時, 發現有邏輯相同, 但是型別不同的狀況
• 泛  廣泛的意思
• T  Holder
• ClassCastException
泛型的使用
• 實際開發應用演練
泛型的型別轉換
• 所有物件都是 is-a Object
• 自動轉型
• 方法之參數型別
• 方法之傳回值型別
自訂泛型類別
• 實際演練操作

More Related Content

What's hot

10. 資料永續與交換
10. 資料永續與交換10. 資料永續與交換
10. 資料永續與交換Justin Lin
 
16 CoreData
16 CoreData16 CoreData
16 CoreDataTom Fan
 
My scala learning note for TWJUG
My scala learning note for TWJUGMy scala learning note for TWJUG
My scala learning note for TWJUGIan Tsai
 
面向对象的Js培训
面向对象的Js培训面向对象的Js培训
面向对象的Js培训yiditushe
 
Mark java script & jquery 基本入門
Mark   java script & jquery 基本入門Mark   java script & jquery 基本入門
Mark java script & jquery 基本入門LearningTech
 
[2009.12.06]javascript dom selectors
[2009.12.06]javascript dom selectors[2009.12.06]javascript dom selectors
[2009.12.06]javascript dom selectorsfangdeng
 
Pytables
PytablesPytables
Pytablesgowell
 

What's hot (8)

10. 資料永續與交換
10. 資料永續與交換10. 資料永續與交換
10. 資料永續與交換
 
16 CoreData
16 CoreData16 CoreData
16 CoreData
 
My scala learning note for TWJUG
My scala learning note for TWJUGMy scala learning note for TWJUG
My scala learning note for TWJUG
 
面向对象的Js培训
面向对象的Js培训面向对象的Js培训
面向对象的Js培训
 
I os 08
I os 08I os 08
I os 08
 
Mark java script & jquery 基本入門
Mark   java script & jquery 基本入門Mark   java script & jquery 基本入門
Mark java script & jquery 基本入門
 
[2009.12.06]javascript dom selectors
[2009.12.06]javascript dom selectors[2009.12.06]javascript dom selectors
[2009.12.06]javascript dom selectors
 
Pytables
PytablesPytables
Pytables
 

Viewers also liked

Java Basic(1)
Java Basic(1)Java Basic(1)
Java Basic(1)Brad Chao
 
Java_07:Thread
Java_07:ThreadJava_07:Thread
Java_07:ThreadBrad Chao
 
Java_05:檔案輸出輸入機制
Java_05:檔案輸出輸入機制Java_05:檔案輸出輸入機制
Java_05:檔案輸出輸入機制Brad Chao
 
Java_03:進階物件導向觀念
Java_03:進階物件導向觀念Java_03:進階物件導向觀念
Java_03:進階物件導向觀念Brad Chao
 
第六堂 Youtube 播放 App (1)
第六堂 Youtube 播放 App (1)第六堂 Youtube 播放 App (1)
第六堂 Youtube 播放 App (1)力中 柯
 
第十一堂 學習編譯與上架
第十一堂 學習編譯與上架第十一堂 學習編譯與上架
第十一堂 學習編譯與上架力中 柯
 
Java8 time
Java8 timeJava8 time
Java8 timekoji lin
 
Java_02:初探物件導向程式設計
Java_02:初探物件導向程式設計Java_02:初探物件導向程式設計
Java_02:初探物件導向程式設計Brad Chao
 
Java 基本程式設計
Java 基本程式設計Java 基本程式設計
Java 基本程式設計Brad Chao
 
第二堂 學習 Java 語法 (1) Java 歷史與程序開發
第二堂 學習 Java 語法 (1) Java 歷史與程序開發第二堂 學習 Java 語法 (1) Java 歷史與程序開發
第二堂 學習 Java 語法 (1) Java 歷史與程序開發力中 柯
 
Hadoop, the Apple of Our Eyes (這些年,我們一起追的 Hadoop)
Hadoop, the Apple of Our Eyes (這些年,我們一起追的 Hadoop)Hadoop, the Apple of Our Eyes (這些年,我們一起追的 Hadoop)
Hadoop, the Apple of Our Eyes (這些年,我們一起追的 Hadoop)Kuo-Chun Su
 
用JavaScript 實踐《軟體工程》的那些事兒!
用JavaScript  實踐《軟體工程》的那些事兒!用JavaScript  實踐《軟體工程》的那些事兒!
用JavaScript 實踐《軟體工程》的那些事兒!鍾誠 陳鍾誠
 

Viewers also liked (14)

Java Basic(1)
Java Basic(1)Java Basic(1)
Java Basic(1)
 
Java_07:Thread
Java_07:ThreadJava_07:Thread
Java_07:Thread
 
Java_05:檔案輸出輸入機制
Java_05:檔案輸出輸入機制Java_05:檔案輸出輸入機制
Java_05:檔案輸出輸入機制
 
Java_03:進階物件導向觀念
Java_03:進階物件導向觀念Java_03:進階物件導向觀念
Java_03:進階物件導向觀念
 
第六堂 Youtube 播放 App (1)
第六堂 Youtube 播放 App (1)第六堂 Youtube 播放 App (1)
第六堂 Youtube 播放 App (1)
 
第十一堂 學習編譯與上架
第十一堂 學習編譯與上架第十一堂 學習編譯與上架
第十一堂 學習編譯與上架
 
Java8 time
Java8 timeJava8 time
Java8 time
 
Java_08:SQL
Java_08:SQLJava_08:SQL
Java_08:SQL
 
Java_02:初探物件導向程式設計
Java_02:初探物件導向程式設計Java_02:初探物件導向程式設計
Java_02:初探物件導向程式設計
 
Java 基本程式設計
Java 基本程式設計Java 基本程式設計
Java 基本程式設計
 
第二堂 學習 Java 語法 (1) Java 歷史與程序開發
第二堂 學習 Java 語法 (1) Java 歷史與程序開發第二堂 學習 Java 語法 (1) Java 歷史與程序開發
第二堂 學習 Java 語法 (1) Java 歷史與程序開發
 
沒有 GUI 的 Git
沒有 GUI 的 Git沒有 GUI 的 Git
沒有 GUI 的 Git
 
Hadoop, the Apple of Our Eyes (這些年,我們一起追的 Hadoop)
Hadoop, the Apple of Our Eyes (這些年,我們一起追的 Hadoop)Hadoop, the Apple of Our Eyes (這些年,我們一起追的 Hadoop)
Hadoop, the Apple of Our Eyes (這些年,我們一起追的 Hadoop)
 
用JavaScript 實踐《軟體工程》的那些事兒!
用JavaScript  實踐《軟體工程》的那些事兒!用JavaScript  實踐《軟體工程》的那些事兒!
用JavaScript 實踐《軟體工程》的那些事兒!
 

Similar to Java_06:Collection

Java SE 7 技術手冊投影片第 09 章 - Collection與Map
Java SE 7 技術手冊投影片第 09 章 - Collection與MapJava SE 7 技術手冊投影片第 09 章 - Collection與Map
Java SE 7 技術手冊投影片第 09 章 - Collection與MapJustin Lin
 
Java程序员面试之葵花宝典
Java程序员面试之葵花宝典Java程序员面试之葵花宝典
Java程序员面试之葵花宝典yiditushe
 
Hibernate 映射配置文件详解
Hibernate 映射配置文件详解Hibernate 映射配置文件详解
Hibernate 映射配置文件详解wpscbbn405
 
Java SE 8 技術手冊第 4 章 - 認識物件
Java SE 8 技術手冊第 4 章 - 認識物件Java SE 8 技術手冊第 4 章 - 認識物件
Java SE 8 技術手冊第 4 章 - 認識物件Justin Lin
 
Android動態ui介面設計
Android動態ui介面設計Android動態ui介面設計
Android動態ui介面設計艾鍗科技
 
Android進階UI控制元件
Android進階UI控制元件Android進階UI控制元件
Android進階UI控制元件艾鍗科技
 
Ecma script edition5-小试
Ecma script edition5-小试Ecma script edition5-小试
Ecma script edition5-小试lydiafly
 
Python面向对象开发基础篇
Python面向对象开发基础篇Python面向对象开发基础篇
Python面向对象开发基础篇modou li
 

Similar to Java_06:Collection (9)

Java SE 7 技術手冊投影片第 09 章 - Collection與Map
Java SE 7 技術手冊投影片第 09 章 - Collection與MapJava SE 7 技術手冊投影片第 09 章 - Collection與Map
Java SE 7 技術手冊投影片第 09 章 - Collection與Map
 
Sun java
Sun javaSun java
Sun java
 
Java程序员面试之葵花宝典
Java程序员面试之葵花宝典Java程序员面试之葵花宝典
Java程序员面试之葵花宝典
 
Hibernate 映射配置文件详解
Hibernate 映射配置文件详解Hibernate 映射配置文件详解
Hibernate 映射配置文件详解
 
Java SE 8 技術手冊第 4 章 - 認識物件
Java SE 8 技術手冊第 4 章 - 認識物件Java SE 8 技術手冊第 4 章 - 認識物件
Java SE 8 技術手冊第 4 章 - 認識物件
 
Android動態ui介面設計
Android動態ui介面設計Android動態ui介面設計
Android動態ui介面設計
 
Android進階UI控制元件
Android進階UI控制元件Android進階UI控制元件
Android進階UI控制元件
 
Ecma script edition5-小试
Ecma script edition5-小试Ecma script edition5-小试
Ecma script edition5-小试
 
Python面向对象开发基础篇
Python面向对象开发基础篇Python面向对象开发基础篇
Python面向对象开发基础篇
 

Java_06:Collection