Java集合详细
目錄
集合
集合基礎
ArrayList集合的常用方法
Collection 的常用方法
Collection 的遍歷
?遍歷集合的基本步驟:
List集合
List集合的概述以及特點
?List集合的特有方法:
List迭代器:
?List增強for循環:
LinkedList集合的特有功能:
Set集合
set集合的特點:
哈希值:
哈希表的存儲過程
LinkedHashSet集合的概述和特點
?TreeSet集合
TreeSet的特點
Comparable的使用
?Comparator比較器排序的使用
泛型
泛型的定義格式
?泛型的好處:
泛型類的定義格式
?泛型方法
泛型方法的定義格式
泛型接口:
??
類型通配符
可變參數:
Map集合
Map集合概述
?添加元素
Map集合的基本功能
Map集合的獲取方法
?Map集合的遍歷
HashMap集合
集合的嵌套案例
案例:統計字符串中每個字符出現的次數
Collections
常用方法
案例:ArrayList存儲學生對象并排序
案例:模擬斗地主(洗牌,發牌,看牌)
案例:模擬斗地主升級版
集合
集合的作用是用來存儲和取出數據的
集合基礎
提供一種存儲空間可變的存儲模型,存儲的數據容量可以發生改變
格式:ArrayList<E>
E:是一種特殊的數據類型,泛型。
例:ArrayList<String>、ArrayList<Student>
構造方法和添加方法
具體實例
當指定添加集合位置的時候,如果當前指定的位置比當前最高位置要高2位甚至更多事,會報錯
例如:如上圖,現在最大的位置從0開始最大位置為2,那么我現在array.add(4,"javase");
則我現在比最大的位置多出了2,所以會出現報錯,這種錯誤稱為集合的索引越界?
ArrayList集合的常用方法
如下:
遍歷ArrayList集合
通過get關鍵字和for循環實現
?array為集合名
ArrayList的相關練習
Collection(單列集合)
Map(雙列集合)
關系表如下:
Collection 的創建及添加元素
Collection <String> c=new ArrayList<String>();
c.add("hello");
c.add("world");
Collection 的常用方法
Collection 的遍歷
Iterator:迭代器,集合的專用遍歷方式;
Iterator的常用方法
?實例:
?遍歷集合的基本步驟:
?關于Collection 的練習:
?結果:
List集合
List集合的概述以及特點
?List集合的特有方法:
List迭代器:
ListIterator<E>:可以從任意方向遍歷列表(可以從前到后也可以從后到前),
ListIterator方法的不同之處
與Iterator相對應的next()對應previous()//返回列表中上一個元素,并向后移動光標位置
hasNext()相對應的hasprevious()
?List增強for循環:
Itable:底層包裝的是一個Iterator迭代器
?實例:
?List集合子類特點:
ArrayList:對應數組(查詢快增刪慢)
LinkedList:對應鏈表(查詢慢增刪快)
LinkedList集合的特有功能:
?
Set集合
set集合的特點:
?HashSet:對集合的迭代順序不做任何保證(不排序)
即存儲順序不一樣
哈希值:
哈希值是jdk根據對象的地址或者字符串或者數字算出來的int類型的數值
public int hashCode():該方法可以返回對象的哈希碼值
同一個對象多次調用該方法返回的哈希值為一樣的
然而默認情況下不同對象的哈希值是不一樣的
重寫方法可以讓哈希值相同
HashSet集合的特點:
?哈希表
哈希表的存儲過程
首先我們哈希表其實是一個數組,默認長度為16,首先先計算出哈希值,然后通過哈希值取余16,算出結果來之后,從第一個開始如果當前計算出來的位置沒有人的話就直接存儲,如果有人那么就進行哈希值的比較,如果哈希值不相同那么就存儲進去,如果相同那么就比較內容,如果內容一樣那就不存儲當前的內容,反之則可以將其存儲進去
LinkedHashSet集合的概述和特點
?TreeSet集合
TreeSet的特點
我們的TreeSet不能單單使用普通類型,必須使用它的包裝類型
?
?
?自然排序:從小到大排序
Comparable的使用
?Comparator比較器排序的使用
泛型
泛型的本質是參數化類型
泛型的定義格式
?泛型的好處:
泛型類的定義格式
泛型類的使用(聲明泛型是什么類型就是什么類型)
?泛型方法
通過泛型類我們可以在調用該方法的時候無論使用什么類型都是可以的?
泛型方法的定義格式
?通過泛型方法我們可以接受任意的引用類型如:
優點: 可以不用聲明是什么泛型,可以在調用的時候直接調用,這時它會自動識別。
泛型接口:
泛型接口的實現類
??
類型通配符
可變參數:
?通過可變參數可以進行多個數據的計算
?注意事項
?可變參數的使用
Arrays.asList只能更改值,不能增加和刪除值
?
?List.of方法的增刪改都不行
Set.of方法不允許有重復值,不能進行增刪操作 ,沒有修改的方法
Map集合
Map集合概述
(Map是一個接口)?
創建Map集合的對象
?添加元素
保證鍵的唯一性
當添加的元素如果,它們的鍵值相同,那么它會替換掉它之前的數據,看以上的案例,當?
柳巖這個元素添加上來后,因為它與王祖賢這個元素的鍵值相同,所以它會替換掉王祖賢這個元素
Map集合的基本功能
Map集合的獲取方法
?get:根據鍵值獲取值,如果不存在則返回null
KeySet:獲取所有鍵的集合
values:獲取所有值的集合
?
?Map集合的遍歷
一、
?實例
第二種方法
通過EntrySet(鍵值對對象)方法獲取Key值和value值?
HashMap集合
同以上Hash一樣,沒有順序,只能用增強for遍歷
HashMap保證數據的唯一性
要重寫hashCode()方法和equals()方法
HashMap集合存儲學生對象并遍歷,而且保證數據的唯一性
集合的嵌套案例
ArrayList集合存儲HashMao元素并遍歷
實例:
HashMap集合存儲ArrayList元素并遍歷
實例:
案例:統計字符串中每個字符出現的次數
實例:
使用TreeMap來進行優化(對key值進行排序)
Collections
是針對集合類操作的工具類
常用方法
Collections.sort(list) ; //從小到大排序
Collections.reverse(list) ; //反轉,將原來的順序進行反轉排序
Collections.shuffle(list); //隨機置換 ,每次運行都產生在不同的位置
案例:ArrayList存儲學生對象并排序
直接利用Collections.sort 方法進行排序
注意:由于sort方法需要的是List 但我們現在是ArraryList 所以我們需要給定一個比較器 Comparator
案例:模擬斗地主(洗牌,發牌,看牌)
實例:
案例:模擬斗地主升級版
要求對牌進行排序
總結
- 上一篇: java 反射 获取成员_java 反射
- 下一篇: 【2019年中总结】五种途径对接天猫精灵