泛型
-泛型方法
[if !supportLists]·???????[endif]定義泛型方法的規(guī)則:所有泛型方法聲明都有一個類型參數(shù)聲明部分(由尖括號分隔),該類型參數(shù)聲明部分在方法返回類型之前(在下面例子中的<E>)铭污。
[if !supportLists]·???????[endif]每一個類型參數(shù)聲明部分包含一個或多個類型參數(shù)恋日,參數(shù)間用逗號隔開膀篮。一個泛型參數(shù)嘹狞,也被稱為一個類型變量,是用于指定一個泛型類型名稱的標(biāo)識符誓竿。
[if !supportLists]·???????[endif]類型參數(shù)能被用來聲明返回值類型磅网,并且能作為泛型方法得到的實(shí)際參數(shù)類型的占位符。
[if !supportLists]·???????[endif]泛型方法體的聲明和其他方法一樣筷屡。注意類型參數(shù)只能代表引用型類型涧偷,不能是原始類型(像int,double,char的等)簸喂。
-泛型類
泛型類的聲明和非泛型類的聲明類似,除了在類名后面添加了類型參數(shù)聲明部分燎潮。
和泛型方法一樣喻鳄,泛型類的類型參數(shù)聲明部分也包含一個或多個類型參數(shù),參數(shù)間用逗號隔開确封。一個泛型參數(shù)除呵,也被稱為一個類型變量,是用于指定一個泛型類型名稱的標(biāo)識符爪喘。因?yàn)樗麄兘邮芤粋€或多個參數(shù)颜曾,這些類被稱為參數(shù)化的類或參數(shù)化的類型。
?如果重復(fù)則放不進(jìn)去
???????內(nèi)部使用HashMap來實(shí)現(xiàn) 鍵值對 建Key是不能重復(fù)的
???????2.集合是無序的? 添加的順序和存儲的順序無關(guān)
???????使用了默認(rèn)排序法
???????哈希算法
???????如果實(shí)現(xiàn)HashMap里面Key不相同
???????計(jì)算這個Key對應(yīng)的對象的Hash值
???????整數(shù):在對象的地址的基礎(chǔ)上按照一定的算法計(jì)算出來的一個整數(shù)
?? ?????如果兩個對象相同 那么計(jì)算和粗來的Hash值就相同
+HashMap 集合 存儲數(shù)據(jù)的特點(diǎn):鍵key-值value
? key不能重復(fù) 可以是任意的對象類型 通常使用字符串String
HashMap<String,Integer> score =new
HashMap<>();
?
???????添加對象:添加鍵值對
???????score.put("Chinese",98);
???????score.put("Math",92);
???????score.put("English",94);
?? ?????更改某個鍵對應(yīng)的值的值
???????score.put("Chinese",89);
???????獲取某個鍵值對的個數(shù)
???????score.size();
???????獲取所有的key?keySet
???????System.out.println(score.keySet());
???????獲取所有的value
values
???????System.out.println(score.values());
???????獲取Entry:key-value? entrySet
???????System.out.println(score.entrySet());
???????獲取一個鍵key對應(yīng)的值
???????System.out.println(score.get("English"));
???????System.out.println(score.get("Eng"));
???????存
???????System.out.println(score.put("PE",100));
鍵值對的遍歷
??????? 1.通過遍歷key來得到每一個key對應(yīng)的值
???????for (String key: score.keySet()){
???????????通過key得到值
???????????int s =score.get(key);
???????????System.out.println("key:"+key+" value:"+s);
???????}
???????2.通過entrySet 得到Entry對象的集合
???????一個Entry管理一個鍵值對 getKey
getValue
???????Set >entrys =score.entrySet();
???????for (Map.Entry entry:entrys){
???????????得到Entry對應(yīng)的key
???????????String key =(String)entry.getKey();
???????????獲取Entry對應(yīng)的值
???????????Integer value = (Integer)entry.getValue();
???????????int s2 =score.get(key);
???????????System.out.println("key:"+key+" value:"+s2 );
???????}
異常處理 處理運(yùn)行過程中出現(xiàn)的不可控的錯誤 是程序更健壯:error
Exception-
?try{
???? 執(zhí)行的代碼
???? 可能出現(xiàn)的異常
???? 一旦出現(xiàn)異常系統(tǒng)自動為我們創(chuàng)建一個異常類 并拋出
??}catch(NullPointerException e){
??如果需要自己處理異常就catch
??}catch(IOException e){
??? 如果有多個異常 可以使用多個catch來捕獲
??? 如果有多個異常 catch的順序是從小到大
??}catch(Exception e){
??} finally{
????? 不管有沒有異常finally都會被執(zhí)行
????? 如果資源回收 網(wǎng)絡(luò)連接 數(shù)據(jù)庫連接I/O流
??}
??如果異常出現(xiàn) 后面代碼將不會執(zhí)行
?try的代碼塊不要抓太大
??使用throws拋出異常 給外部處理
??當(dāng)特殊情況出現(xiàn)了 自己可以選擇拋出異常
??throw
??自定義異常類