1、線程安全 線程安全就是說多線程訪問同一代碼,不會產生不確定的結果。
2、List類和Set類List類和Set類是Collection集合接口的子接口。Set子接口:無序,不允許重復。List子接口:有序,可以有重復元素。
Set和List對比: Set:檢索元素效率低下,刪除和插入效率高,插入和刪除不會引起元素位置改變。 List:和數組類似,List可以動態增長,查找元素效率高,插入刪除元素效率低,因為會引起其他元素位置改變。 Set和List具體子類: Set |————HashSet:以哈希表的形式存放元素,插入刪除速度很快。 List |————ArrayList:動態數組 |————LinkedList:鏈表、隊列、堆棧。
Array和java.util.Vector Vector是一種老的動態數組,是線程同步的,效率很低,一般不贊成使用。
3、HashMap和HashTablea.HashMap去掉了HashTable的contains方法,但是加上了containsValue()和containsKey()方法。b.HashTable同步的,而HashMap是非同步的,效率上比HashTable要高。c.HashMap允許空鍵值,而HashTable不允許。
4、線程安全集合類與非線程安全集合類 LinkedList、ArrayList、HashSet是非線程安全的,Vector是線程安全的;HashMap是非線程安全的,HashTable是線程安全的;StringBuilder是非線程安全的,StringBuffer是線程安全的。
5、集合適用場景對于查找和刪除較為頻繁,且元素數量較多的應用,Set或Map是更好的選擇;ArrayList適用于通過為位置來讀取元素的場景;LinkedList 適用于要頭尾操作或插入指定位置的場景;Vector 適用于要線程安全的ArrayList的場景;Stack 適用于線程安全的LIFO場景;HashSet 適用于對排序沒有要求的非重復元素的存放;TreeSet 適用于要排序的非重復元素的存放;HashMap 適用于大部分key-value的存取場景;
TreeMap 適用于需排序存放的key-value場景。
學習Java的同學注意了?。?! 學習過程中遇到什么問題或者想獲取學習資源的話,歡迎加入Java學習交流群,群號碼:523047986 我們一起學Java!
新聞熱點
疑難解答