1.java.util.Collections工具類:
1、線程同步
/*
static <T> Collection<T> synchronizedCollection(Collection<T> c)
返回由指定集合支持的同步(線程安全)集合仿耽。
static <T> List<T> synchronizedList(List<T> list)
返回由指定列表支持的同步(線程安全)列表眯搭。
static <K,V> Map<K,V> synchronizedMap(Map<K,V> m)
返回由指定地圖支持的同步(線程安全)映射窥翩。
*/
Collection<Object> c = Collections.synchronizedCollection(new ArrayList<>());
List<Object> list = Collections.synchronizedList(new ArrayList<>());
Map<Object, Object> map = Collections.synchronizedMap(new HashMap<>());
2、同時向容器中添加多個元素
/*
static <T> boolean addAll(Collection<? super T> c, T... elements)
將所有指定的元素添加到指定的集合鳞仙。
*/
Collections.addAll(list,e1,e2,e3,e4...);
3寇蚊、排序
/*
static <T extends Comparable<? super T>>
void sort(List<T> list)
根據(jù)其元素的natural ordering對指定的列表進行排序。
static <T> void sort(List<T> list, Comparator<? super T> c)
根據(jù)指定的比較器引起的順序?qū)χ付ǖ牧斜磉M行排序棍好。
注意點:
List集合中的元素仗岸,要具有可比性,才能夠進行排序sort()借笙,比較大小扒怖。
Comparable接口,Comparator接口业稼。
*/
ArrayList<Integer> list2 = new ArrayList<>();
Collections.addAll(list2, 3,1,6,4,2,7);
System.out.println(list2);//list集合本身是添加的順序
//集合排序
Collections.sort(list2);
System.out.println(list2);
Collections.sort(list2, new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
return o2-o1;
}
});
System.out.println(list2);
4盗痒、將集合中的元素進行翻轉(zhuǎn):
/*
static void reverse(List<?> list)
反轉(zhuǎn)指定列表中元素的順序。
*/
//list集合的翻轉(zhuǎn):元素顛倒過來低散。
Collections.reverse(list2);
5俯邓、將集合中元素隨機
/*
隨機洗牌
static void shuffle(List<?> list)
使用默認的隨機源隨機排列指定的列表
*/
//讓集合中的元素,隨機的存儲位置
Collections.shuffle(list2);
System.out.println(list2);
6熔号、替換
/*
static <T> boolean replaceAll(List<T> list, T oldVal, T newVal)
將列表中一個指定值的所有出現(xiàn)替換為另一個稽鞭。
*/
Collections.replaceAll(list2, 1, 100);
System.out.println(list2);
7、統(tǒng)計指定元素在集合中出現(xiàn)的次數(shù)
/*
static int frequency(Collection<?> c, Object o)
返回指定集合中與指定對象相等的元素數(shù)
*/
int count = Collections.frequency(list2, 6);
System.out.println(count);
2.1引镊、異常
異常的概念:
異常:Exception
概念:在程序執(zhí)行的時候朦蕴,代碼中產(chǎn)生的不正常事件篮条,導(dǎo)致程序無法正常的執(zhí)行。
程序的執(zhí)行流程:
step1:JVM創(chuàng)建一個主線程吩抓,調(diào)用主函數(shù)涉茧,程序的入口:main()...
step2:按照main方法中的內(nèi)容,從上向下執(zhí)行琴拧,逐行執(zhí)行
創(chuàng)建對象降瞳。。蚓胸。
分支語句挣饥。。沛膳。
循環(huán)語句扔枫。。
方法調(diào)用锹安。短荐。。叹哭。忍宋。
step3:當(dāng)main方法中的所有代碼全部執(zhí)行完畢,程序正常結(jié)束了风罩。JVM退出了糠排。
程序的執(zhí)行過程中,產(chǎn)生了異常超升,由JVM負責(zé)創(chuàng)建該類型的異常對象并拋出入宦,打斷程序的執(zhí)行。
2.2室琢、異常的分類
Throwable類:可拋出的乾闰。
|————Error:錯誤。(系統(tǒng)級別的問題盈滴,程序員解決不了)
|————Exception:異常涯肩。(程序員需要解決的)
Exception:異常
|————受檢異常,編譯在編譯程序時候巢钓,能夠檢查出來的異常病苗。外部的因素導(dǎo)致的異常。
IOException:IO異常
FileNotFoundException:文件不存在的異常
SQLException:數(shù)據(jù)庫異常
竿报。。继谚。烈菌。
必須處理阵幸,程序才能運行。
|————非受檢異常芽世,又叫運行時異常(RuntimeException)挚赊。編譯器在編譯程序的時候,不檢查济瓢。運行時候可能暴露出來的異常荠割。代碼中的邏輯問題導(dǎo)致的異常。
ArithmeticException:算術(shù)異常
NullPointerException:空指針異常
ClassCastException:類轉(zhuǎn)型失敗異常
ArrayIndexOutOfBoundsException:數(shù)組下標(biāo)越界異常
StringIndexOutOfBoundsException:字符串下標(biāo)越界異常
InputMismatchException:類型不匹配異常
NumberFormatException:數(shù)字格式化異常
旺矾。蔑鹦。。箕宙。
step1:編寫源代碼
step2:編譯器進行編譯:產(chǎn)生字節(jié)碼文件
? javac HelloWorld.java--->HelloWorld.class
step3:解釋器去執(zhí)行嚎朽。
? java HelloWorld
2.3、捕獲異常
捕獲的語法結(jié)構(gòu):
try{
//try語句塊中柬帕,有可能產(chǎn)生異常的代碼哟忍,嘗試著執(zhí)行
}catch(異常類型1 e){
//對異常處理
}catch(異常類型2 e){
//
}...
finally{
//此處的操作是可選的,
這里的代碼陷寝,一定會被執(zhí)行的锅很。。
}
解釋說明:關(guān)鍵字
- try:嘗試的意思凤跑,嘗試著執(zhí)行代碼塊中的代碼
- catch:抓取爆安,捕獲,捕獲異常對象饶火。鹏控。
- finally:最終的。
執(zhí)行流程:
1肤寝、先嘗試著執(zhí)行try語句塊中的代碼当辐,如果沒有產(chǎn)生異常,忽略catch語句鲤看。繼續(xù)向下執(zhí)行缘揪。
2、如果產(chǎn)生異常了义桂,那么就會跳出try語句找筝,而去匹配catch語句,和哪個catch匹配上了慷吊,就進入到catch語句中去執(zhí)行袖裕。
3、一個try語句可以配合多個catch溉瓶,產(chǎn)生異常時急鳄,會從上向下匹配這些異常類型谤民。和哪個匹配上了就執(zhí)行哪個catch。小類型的異常寫前面疾宏,大類型的異常寫后面张足。
4、如果有finally語句坎藐,無論是否產(chǎn)生異常为牍,都會執(zhí)行finally里面的代碼。該語句塊是可選的岩馍。一般用于資源的釋放碉咆,文件的斷開,臨時文件的刪除兼雄。吟逝。
2.4、拋出異常
throws關(guān)鍵字赦肋,該方法不處理異常块攒,拋出,交給調(diào)用處進行處理異常佃乘。
public void test()throws 異常類型1,異常類型2...{
}
表示該方法不處理異常囱井,向外拋出,交由調(diào)用處進行處理趣避。受檢異常庞呕,調(diào)用處就必須處理,非受檢異常調(diào)用處可以暫時不處理程帕。
【擴展內(nèi)容】
1住练、throw關(guān)鍵字,主動拋出一個異常對象愁拭。