JavaSE(十)——set和map集合、异常、File类
文章目錄
- 1.set集合
- 2. Map集合
- 2.1 Map概述
- 2.2 Map集合的基本功能
- 2.3 Map集合遍歷
- 3.異常
- 3.1 異常的繼承體系
- 3.2 異常處理的兩種方式
- 3.3 異常注意事項
- 3.4 最常見的 幾個異常
- 4. File類
1.set集合
- HashSet:底層數據結構是哈希表(數組+鏈表 JDK1.8 之后數組+鏈表+二叉樹),元素唯一 、無序 ,元素的唯一性,是靠元素重寫hashCode()和equals()方法來保證的。如果元素不重寫,就無法保證。
- LinkedHashSet 元素有序且唯一 數據結構是鏈表和哈希表,鏈表保證了有效,哈希表保證唯一。
- TreeSet 底層數據結構是二叉樹,元素唯一,且能對元素進行排序。
TreeSet兩種排序
TreeSet集合中保證元素唯一性與排序有兩種方式:
方式1:實現自然排序接口 Comparable,重寫 compareTo(T t)方法
方式2:實現比較器排序接口 Comparator,重寫 compare(T t1, T t2)方法
-
實例之自然排序
? 是java里唯一的三元運算符,符號的意思是:
如果?前面的式子為真,那么就返回冒號:左邊的值;否則返回右邊的值。
-
運行結果
-
實例之比較器排序
-
運行結果
2. Map集合
2.1 Map概述
- 是一個接口,其將鍵映射到值的對象。一個映射不能包含重復的鍵;每個鍵最多只能映射到一個值。Map接口下的三個實現類 HashMap、LinkedHashMap、TreeMap
HashMap 工作原理:HashMap 類有一個叫做 Entry 的內部類。這個 Entry 類包含了 key-value 作為實例變量。每 當往 hashmap 里面存放 key-value 對的時候,都會為它們實例化一個 Entry 對象,這個 Entry 對象就會存儲在前面提到的 Entry 數組 table 中。Entry 具體存在 table 的那個位置是 根據 key 的 hashcode()方法計算出來的 hash 值(來決定)。
2.2 Map集合的基本功能
Map集合的功能概述
(1)添加功能
V put(K key,V value):添加元素。這個其實還有另一個功能?替換
如果鍵是第一次存儲,就直接存儲元素,返回null
如果鍵不是第一次存在,就用值把以前的值替換掉,返回以前的值
(2)刪除功能
void clear():移除所有的鍵值對元素
V remove(Object key):根據鍵刪除鍵值對元素,并把值返回
(3)判斷功能
boolean containsKey(Object key):判斷集合是否包含指定的鍵
boolean containsValue(Object value):判斷集合是否包含指定的值
boolean isEmpty():判斷集合是否為空
(4)獲取功能
Set<Map.Entry<K,V>> entrySet(): 返回一個鍵值對的Set集合
V get(Object key):根據鍵獲取值
Set keySet():獲取集合中所有鍵的集合
Collection values():獲取集合中所有值的集合
(5)長度功能
int size():返回集合中的鍵值對的對數
- 實例
2.3 Map集合遍歷
方式一:根據鍵找值
方式二:把鍵值對 對象 Node 統一取出來,根據鍵值對對象找鍵和值
- 實例
3.異常
- 異常的概述: 異常就是Java程序在運行過程中出現的錯誤。
3.1 異常的繼承體系
異常的基類: Throwable
嚴重問題: Error 不予處理,因為這種問題一般是很嚴重的問題,比如: 內存溢出
非嚴重問題: Exception
編譯時異常: 非RuntimeException及其子類,必須解決
運行時異常: RuntimeException及其子類,可解決也可不解決
3.2 異常處理的兩種方式
(1)try…catch處理異常的基本格式
try {
可能出現問題的代碼 ;
}catch(異常名 變量名){
針對問題的處理 ;
}finally{
釋放資源;
}
快捷鍵:ctrl+alt+T
(2)throws:拋給調用者去處理,簡稱甩鍋,一般甩到main()函數就不再甩,在主函數中捕獲異常再處理。
快捷鍵:alt+ENTER
3.3 異常注意事項
(1)子類重寫父類方法時,子類的方法必須拋出相同的異常或父類異常的子類,或者子類不拋出異常也是可以的。(父親壞了,兒子不能比父親更壞)
(2)如果父類拋出了多個異常,子類重寫父類時,只能拋出相同的異常或者是他的子集,子類不能拋出父類沒有的異常,或者子類不拋出異常也是可以的。
(3)如果被重寫的方法沒有異常拋出,那么子類的方法絕對不可以拋出異常,如果子類方法內有異常發生,那么子類只能try,不能throws.
3.4 最常見的 幾個異常
NullPointerException - 空指針引用異常
ClassCastException - 類型強制轉換異常
IllegalArgumentException - 傳遞非法參數異常
ArithmeticException - 算術運算異常
IndexOutOfBoundsException - 下標越界異常
NumberFormatException - 數字格式異常
4. File類
- 文件和目錄路徑名的抽象表示形式, 這個File類可以用來表示文件,也可以用來表示目錄
- 創建功能
public boolean createNewFile():創建一個新的文件 如果存在這樣的文件,就不創建了
public boolean mkdir():創建文件夾 如果存在這樣的文件夾,就不創建了 注意這個方法只能創建單層目錄 如果創建多層目錄得一層一層創建
public boolean mkdirs():創建文件夾,如果父文件夾不存在,會幫你創建出來 可以創建多層目錄 當然也可以創建單層目錄 - 刪除功能
public boolean delete():刪除文件或者文件夾 - 重命名功能
public boolean renameTo(File dest):把文件重命名為指定的文件路徑 - 判斷功能
public boolean isDirectory(): 判斷是否是目錄
public boolean isFile(): 判斷是否是文件
public boolean exists(): 判斷是否存在
public boolean canRead(): 判斷是否可讀
public boolean canWrite(): 判斷是否可寫
public boolean isHidden(): 判斷是否隱藏 - 獲取功能
public String getAbsolutePath(): 獲取絕對路徑
public String getPath(): 獲取相對路徑
public String getParent() 返回此抽象路徑名父目錄的路徑名字符串;如果此路徑名沒有指定父目錄,則返回 null。
public File getParentFile() 返回此抽象路徑名父目錄的抽象路徑名;如果此路徑名沒有指定父目錄,則返回 null。
public long getTotalSpace() 返回此抽象路徑名指定的分區大小。 返回總容量 單位字節
public long getFreeSpace() 返回此抽象路徑名指定的分區中未分配的字節數。返回剩余容量 單位字節
public String getName(): 獲取名稱
public long length(): 獲取長度。字節數
public long lastModified(): 獲取最后一次的修改時間,毫秒值
public String[] list(): 獲取指定目錄下的所有文件或者文件夾的名稱數組,獲取相對路徑
public File[] listFiles(): 獲取指定目錄下的所有文件或者文件夾的File數組,獲取絕對路徑
總結
以上是生活随笔為你收集整理的JavaSE(十)——set和map集合、异常、File类的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JavaSE(九)——正则表达式、Dat
- 下一篇: JavaSE(十一)——多线程