文章目錄
- java集合框架簡單介紹
- 集合框架一覽圖
- java集合框架的優點和作用
- 基本關系說明
- 集合框架關于各種介面的描述
- 集合框架關于各種類的描述
- collection介面的一些常用方法
- Map介面的一些常用方法
前言:java語法基礎,博主已經更完了,接下來就要進入資料結構這新的篇章了,緊跟博主,從此讓資料結構變得簡單,讓你愛上資料結構,
前期文章:
[java篇]包,繼承,組合
[java篇]多型,抽象類,介面
[java篇]圖書管理系統,是你的期末大作業嗎?
[java篇]一次性幫你搞定String,StringBuffer,StringBuilder類
[java篇]一口氣搞定例外處理
[資料結構]線性表之順序表
[資料結構]線性表之單鏈表
[資料結構]雙鏈表的實作,以及雙鏈表和單鏈表之間的比較,鏈表和順序表的優劣
冰凍三尺,非一日之寒,學習資料結構是一個漫長的程序,有一句話所得好,不會資料結構的程式員,肯定進不了大廠,所以所謂了大廠夢,兄弟們,卷起來吧,
java集合框架簡單介紹
Java 集合框架 Java Collection Framework ,又被稱為容器 container ,是定義在java.util 包下的一組介面 interfaces 和其實作類 classes ,
其主要表現為將多個元素 element 置于一個單元中,用于對這些元素進行快速、便捷的存盤 store 、檢索retrieve 、管理 manipulate ,即平時我用于對這些元素進行快速、便捷的存盤 俗稱的增刪查改 CRUD ,
集合框架一覽圖

看到上面的這張圖,大家肯定會想,要學會資料結構可真不簡單呀,是的,在圖中每個類都要實作相應的介面中的抽象方法,至于怎么實作(類似于一個雙向鏈表的實作,順序表的實作(點此鏈接),ps:其實這兩個在以前的博客中有專門的介紹,還類似于實作一個堆疊,一個堆),這些博主以后都會陸續更新,
我們要學會資料結構的背后實作,同時我們也要會用資料結構,學習明白之后,你肯定會有一種站在巨人的肩膀上編程的感覺,
java集合框架的優點和作用
1.我們學習了集合資料結構背后是怎樣實作的,就會知道在怎樣的情況下應該使用怎樣的資料結構,哪個資料結構有著怎樣的優缺點,
2.我們學了資料結構之后,我們可以寫出高效的代碼,
基本關系說明
集合框架關于各種介面的描述
| 介面名稱 | 概念 |
|---|---|
collection介面 | 用來存盤管理一組物件 objects(Object是所有類的祖先類,所以說在collection中可以用來存盤管理所有的類的物件),這些物件一般被成為元素 elements |
List介面 | 線性表,繼承于collection介面,線性表分為順序表和鏈表 |
Queue介面 | 佇列,特性:先進先出 |
Set介面 | 元素不能重復,背后隱含著查找/搜索的語意 |
ShortSet介面 | 一組有序的不能重復的元素 |
Deque介面 | 雙端佇列,繼承于Queue 雙端佇列是與佇列類似的項的有序集合,雙端佇列有兩個端部,首部和尾部,并且項在集合中保持不變,雙端隊不同的地方是添加和洗掉項是非限制性的,可以在前面或后面添加新項;同樣,可以從任一端移除現有項, |
Map介面 | 鍵值對 Key-Value-Pair ,背后隱含著查找/搜索的語意 |
SortedMap介面 | 一組有序的鍵值對 |
集合框架關于各種類的描述
| 相關類名稱 | 描述 |
|---|---|
vector | 該類的作用和ArrayList類很像,它的默認增容為原來的兩倍,而ArrayList類的增容效果為1.5倍增容,我們一般不常用vector類 |
Stack | 繼承于vector,實作了一個先進后出的堆疊 |
ArrayList | 是一個順序表,底層依靠陣列實作,能很快的在順序表中查找到某個元素, |
LinkedList | 是一個雙向鏈表,又來實作佇列,佇列,先進先出 |
PriortyQueue | 是一個優先佇列,它和普通佇列的不同,是因為優先佇列,不是先進先出的,優先佇列分為大頂堆和小頂堆,每次彈出的是堆中最大和元素或最小的元素,底層依靠陣列實作 |
TreeSet | 是一個有序的集合,它的作用是提供有序的Set集合, |
HashSet | HashMap 來實作的,是一個不允許有重復元素的集合.HashSet 允許有 null 值,HashSet 是無序的,即不會記錄插入的順序HashSet 不是執行緒安全的 |
HashMap | 可以理解為多了一層指向關系,可以用指定Key找到指定Value, |
TreeMap | TreeMap存盤K-V鍵值對,通過紅黑樹(R-B tree)實作; |
collection介面的一些常用方法
| 方法名稱 | 方法內容 |
|---|---|
boolean add(E e) | 將元素e放到集合中 |
void clear() | 洗掉集合中的所有元素 |
boolean isEmpty() | 判斷集合是不是空集合 |
boolean remove(object e) | 如果元素e在集合中,洗掉其中一個 |
int size() | 回傳集合中的元素個數 |
object[] toArray() | 回傳一個裝有一個所有元素的陣列 |
勤奮的博主,在這里為大家一一展示方法的使用哈!!!
1.關于add()方法:
public static void main(String[] args) {
Collection<Integer>collection = new ArrayList<>();
collection.add(1);
collection.add(2);
System.out.println(collection);
}
//運行結果:[1,2]
我們是否想一下如果我們在使用collection集合的時候,沒有規定要添加的元素是哪種型別,即不寫<>里面的包裝類 ,那是怎樣的呢?請看一下代碼!!
public static void main(String[] args) {
Collection collection = new ArrayList<>();
collection.add(1);
collection.add("hello world");
System.out.println(collection);
}
//運行結果:[1,hello world]
看到了嗎?它可以列印!!那是因為我們沒有規定包裝類,我們在以后解題的程序中,盡量不要使用collection,
2.關于clear()方法:
public static void main(String[] args) {
Collection collection = new ArrayList<>();
collection.add(1);
collection.add("hello world");
collection.clear();
System.out.println(collection);
}
//運行結果:[]
這個方法的使用,直接就把添加到collection集合中的元素全部清除,
3.關于isEmpty()方法:
//秉承上述2.的代碼,我們已經把集合中的元素清空自然檢查為空的時候肯定是true
System.out.println(collection.isEmpty());
4.關于remove(object o)方法
//還是關于代碼3.的添加,我們在這里洗掉字串"hello world",但是洗掉的是原來集合中有的元素,如果沒有我們有一個(布爾型別)值去接受,會回傳一個false
collection.remove("hello world");
System.out.println(collection);
//運行結果:[1]
5.關于size()和toArray()方法:
public static void main(String[] args) {
Collection<Integer> collection = new ArrayList<>();
collection.add(1);
collection.add(2);
collection.add(3);
collection.add(4);
collection.add(5);
System.out.println(collection.size());
System.out.println(Arrays.toString(collection.toArray()));
}
//運行結果:5
//[1,2,3,4,5]
Map介面的一些常用方法
| 方法名稱 | 方法說明 |
|---|---|
get(Object o) | 根據指定key查找指定的value值 |
getDeFault(Object o ,void defaultValue) | 根據指定key去查找對應的value值,如果沒有找到就回傳默認值 |
put(k key,v value) | 指定key-value值,添加到map中 |
boolean containsKey(Object key) | 在map中看是否存在key |
boolean containsValue(Object value) | 在map中查找是否存在value |
Set<Map.Entry<k,v>> entrySet() | 將所有鍵值回傳 |
boolean isEmpty() | 判斷map是否為空 |
int size() | 回傳鍵值對的數量 |
博主還是在這里一一介紹哈!!
建立一個map物件 ,如下它的鍵值對,都為字串型
Map<String,String>map = new Hashmap<>()
如下它的鍵值對,鍵值為整形,value值為字串型
Map<Integer,String>map = new Hashmap<>()
所以我們可以根據基本型別和參考型別所對應的包裝類去限制鍵值對的型別,
1.關于put(k key,v value)方法和get()方法
public static void main(String[] args) {
Map<String,String>map = new HashMap<>();
map.put("三國演義","羅貫中");
map.put("水滸傳","施耐庵");
map.put("西游記","吳承恩");
map.put("紅樓夢","曹雪芹");
System.out.println(map.get("三國演義"));
System.out.println(map.getOrDefault("java","zhangsan"));
}
//運行結果:羅貫中
//zhangsan
在我們使用put()方法的時候,依次在map中依次存放相應的鍵值對
在使用get()方法的時候,向方法里邊傳入key值,它就會回傳相應的value值,
2.關于containsKey()和containsValue方法的使用:
//同樣還是上面的添加代碼
//我們在這里查找
System.out.println(map.containsKey("三國演義"));//查找key值
System.out.println(map.containsValue("羅貫中"));//查找value值
//運行結果:true true
3.在這里我們重點介紹一下Set<Map.Entry<k,v>> entrySet()方法:
它的作用是回傳鍵值對,這個方法,把本來在圖中無序的鍵值對,添加到了集合中,
Set<Map.Entry<String,String>> entrySet = map.entrySet();
for(Map.Entry<String,String> entry : entrySet ){
System.out.println(entry);
}
//運行結果: 看吧,說圖里邊的鍵值對是無序的,它添加集合中的順序也不是我們添加鍵值對的順序
//水滸傳=施耐庵
//三國演義=羅貫中
//紅樓夢=曹雪芹
//西游記=吳承恩
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/333778.html
標籤:java
