內(nèi)容
ⅠSet接口
Ⅱ錯(cuò)誤error和異常exception
具體內(nèi)容
ⅠSet接口
1.分類Set集合主要包括HashSet
TreeSet
實(shí)現(xiàn)比較 需要添加CompareTo接口
(1)HashSet的特點(diǎn)
不允許存儲(chǔ)重復(fù)的元素
沒(méi)有索引巴粪,沒(méi)有帶索引的方法焕梅,也不能使用普通的for循環(huán)遍歷
是一個(gè)無(wú)序的集合,存儲(chǔ)元素和取出元素的順序有可能不一致
底層是一個(gè)哈希表結(jié)構(gòu)(查詢的速度非常的快)
(2)TreeSet是可以排序的集合褂傀,繼承了AbstractSet抽象類
TreeSet是基于TreeMap實(shí)現(xiàn)的,TreeSet的元素支持2種排序方式:自然排序或者根據(jù)提供的Comparator進(jìn)行排序
2.Set接口的特點(diǎn):
(1)不允許存儲(chǔ)重復(fù)的元素
(2)沒(méi)有索引手形,沒(méi)有帶索引的方法朽缎,也不能使用普通的for循環(huán)遍歷
3.使用迭代器遍歷set集合
Iterator<Integer> it = set.iterator();
while (it.hasNext()) {
Integer n = it.next();
System.out.println(n);
}
使用增強(qiáng)for遍歷set集合
System.out.println("------------------");
for (Integer i : set) {
System.out.println(i);
4.HashMap集合存儲(chǔ)數(shù)據(jù)的特點(diǎn):鍵key-值value 一個(gè)鍵對(duì)應(yīng)一個(gè)值
HashMap應(yīng)用如下
// key不能重復(fù) 可以是任意的對(duì)象類型 通常使用字符串String
HashMap<String, Integer> score1 = new HashMap<>();
// 添加對(duì)象:添加鍵值對(duì)
score1.put("Chinese", 89);
score1.put("Math", 79);
score1.put("English", 29);
// 更改某個(gè)鍵對(duì)應(yīng)的值
score1.put("Chinese", 81);
// 獲取鍵值對(duì)的個(gè)數(shù)
score1.size();
// 獲取所有的key 使用keySet
System.out.println(score1.keySet());
// 獲取所有的value 使用values
System.out.println(score1.values());
// 獲取Entry:key-value 和直接打印score1結(jié)果entrySet為[] 直接打印score1為{} 內(nèi)容相同都為鍵值對(duì)
System.out.println(score1.entrySet());
System.out.println(score1);
// 獲取一個(gè)鍵key對(duì)應(yīng)的值
System.out.println(score1.get("English"));
// 鍵值對(duì)的遍歷
// 1.通過(guò)遍歷key來(lái)得到每一個(gè)key對(duì)應(yīng)的值
for (String key : score1.keySet()) {
//通過(guò)key得到值
int s = score1.get(key);
System.out.println("key:" + " value:" + s);
}
// 2.通過(guò)entrySet 得到Entry對(duì)象的集合 Entry為一個(gè)類型
// 一個(gè)Entry管理一個(gè)鍵值對(duì) getKey getValue
Set<Map.Entry<String, Integer>> entrys = score1.entrySet();
for (Map.Entry entry : entrys) {
//得到Entry對(duì)應(yīng)的key
String key = (String) entry.getKey();
//獲取Entry對(duì)應(yīng)的值
Integer value = (Integer) entry.getValue();
}
Ⅱ錯(cuò)誤error和異常exception
1.異常的定義
異常是程序本身可以處理的異常,該事件會(huì)在程序執(zhí)行過(guò)程中發(fā)生躯枢,影響了程序的正常執(zhí)行
大多數(shù)錯(cuò)誤與代碼編寫者執(zhí)行的操作無(wú)關(guān),而表示代碼運(yùn)行時(shí) JVM(Java 虛擬機(jī))出現(xiàn)的問(wèn)題
2.錯(cuò)誤的定義
錯(cuò)誤是程序無(wú)法處理的錯(cuò)誤槐臀,表示運(yùn)行應(yīng)用程序中較嚴(yán)重問(wèn)題
3.錯(cuò)誤和異常的分類
4.使用try-catch語(yǔ)句捕獲異常
try {
// 可能會(huì)發(fā)生異常的程序代碼
} catch (Type1 id1){
// 捕獲并處置try拋出的異常類型Type1
}
catch (Type2 id2){
//捕獲并處置try拋出的異常類型Type2
}
5.try-catch-finally語(yǔ)句
try {
// 可能會(huì)發(fā)生異常的程序代碼
} catch (Type1 id1) {
// 捕獲并處理try拋出的異常類型Type1
} catch (Type2 id2) {
// 捕獲并處理try拋出的異常類型Type2
} finally {
// 無(wú)論是否發(fā)生異常锄蹂,都將執(zhí)行的語(yǔ)句塊
}
具體如下
圓括號(hào)只能添加可以關(guān)閉的對(duì)象
//實(shí)現(xiàn)了Closeable接口的對(duì)象
//如果出現(xiàn)異常 系統(tǒng)自動(dòng)就關(guān)閉這個(gè)資源
try (FileReader fr1 = new FileReader("d")) {
//使用對(duì)象
} catch (IOException e) {
e.printStackTrace();
}
try {
TException.test();
} catch (FileNotFoundException e) {
e.printStackTrace();
}
6.拋出異常
(1)拋出異常的介紹
任何Java代碼都可以拋出異常,從方法中拋出的任何異常都必須使用throws子句
(2)throws拋出異常
throws語(yǔ)句用在方法定義時(shí)聲明該方法要拋出的異常類型水慨,如果拋出的是Exception異常類型得糜,則該方法被聲明為拋出所有的異常,多個(gè)異澄鳎可使用逗號(hào)分割
7.finally代碼塊不管有沒(méi)有異常都會(huì)被執(zhí)行
FileReader fr = null;
try {
int c = b / 1;
System.out.println("hello");
fr = new FileReader("");
} catch (ArithmeticException e) {
System.out.println(e.getMessage());
} catch (FileNotFoundException e) {
e.printStackTrace();
} finally {
try {
fr.close();
} catch (IOException i) {
}
}
8.Throwable類中的常用方法
getCause():返回拋出異常的原因朝抖,如果cause不存在或未知,則返回 null
getMeage():返回異常的消息信息
printStackTrace():對(duì)象的堆棧跟蹤輸出至錯(cuò)誤輸出流谍珊,作為字段 System.err的值