1.簡述集合體系?
集合分為單列集合和雙列集合。
單列集合的頂層是collection介面,包括list和set集合。
list集合的特點是元素可重複,有序,有索引,能夠有角標操作集合,有特有的迭代方式listiterator。包括arraylist、linkedlist和vector。
arraylist集合底層採用的是陣列資料結構,查詢速度比較快,因為陣列有索引,在記憶體中分配的空間是連續的,但是增刪比較慢。執行緒不同步,效率高。初始容量為10。
linkedlist集合的底層採用的是鍊錶資料結構,增刪速度比較快,查詢速度比較慢。執行緒不同步。
vector底層資料結構也是陣列資料結構,但是執行緒同步,效率低,特有取出元素的方式是列舉。因為效率低,逐步被arraylist替代。
set集合的特點元素是無序的(存入和取出的順序不一致),元素不可以重複。包括hashset和treeset。
hashset的底層資料結構是雜湊表,執行緒不同步,效率高。保證元素的唯一性額有的依據是元素的hashcode和equals方法。如果hashcode不同,不呼叫equals方法。如果hashcode相同,才會呼叫equals方法判斷元素是否相同。
treeset的底層資料結構是二叉樹,執行緒不同步,效率高。能夠給元素進行排序。保證元素唯一性的依據是compareto和return0。排序的兩種方式:第一種元素自身實現comparable介面,重寫compareto()方法。這種排序方式叫元素的自然排序,也叫預設排序。第二種是當元素自身不具備比較性或者具備的比較性不是所需要的,這時就讓集合自身具備比較性,當集合初始化時就有了比較性。定義乙個比較器實現comparator介面,重寫compare方法,定義集合的時候將比較器作為引數傳遞給treeset的建構函式,這樣集合就具有了比較性。
map是雙列集合的頂層介面,該集合儲存的是鍵值對,一對一對的往裡存,而且要保證鍵的唯一性。包括hashtable、hashmap、treemap。
hashtable的底層資料結構是雜湊表,不可以儲存null鍵和null值,執行緒同步,效率低。jdk1.0.
hashmap的底層資料結構是雜湊表,可以儲存null鍵和null值,執行緒不同步,將hashtable替代,jdk1.2效率高。保證鍵的唯一性的依據是hashcode和equals方法。
treemap的底層資料結構是二叉樹,執行緒不安全,能夠給集合中的鍵排序。
2.什麼時候使用什麼集合?
(1)首先要看是單列還是雙列,是單列的話就用collection,雙列就用map。
(2)要是單列的話看元素是不是要求重複,元素重複的話使用list,看查詢多還是增刪多,查詢多的話用arraylist,增刪多的話用linkedlist,不確定的話用arraylist。不重複的話使用set,看是否要求排序,排序的話用treeset,不需要排序用hashset。不確定的話用hashset。
(3)要是雙列的話,看是否要求排序,要求排序用treemap,不要求排序用hashmap,不確定的話用hashmap。
3.collection(單列)和(map)雙列的區別?
collection是單列集合,map是雙列集合。
map的鍵是唯一的,collection體系中的set集合中的元素是唯一的。
map集合的資料結構針對鍵有效,collection的底層資料結構針對元素有效。
4.遍歷集合的方式有哪些?
遍歷list集合的方式有普通for、增強for、迭代器iterator、列表迭代器listiterator。
遍歷set集合的方式有增強for、迭代器iterator。
遍歷map集合的方式有keyset(),entryset()。然後通過增強for、迭代器iterator遍歷。
5.用迭代器和增強for遍歷集合,能否用集合的方法操作集合?
不能,會出現併發修改異常,concurrentmodificationexception。併發修改異常就是在用普通迭代器的時候用集合的方法增加、刪除元素。可以用列表迭代器。
6.泛型是什麼?有什麼好處?
簡單的說一種標籤,不確定的型別,使用者使用的時候確定型別,是jdk1.5出現的新特性,用於解決安全問題,是一種型別安全機制。
好處:(1)將執行時期會可能出現的異常轉移到編譯期提高了安全性。
(2)避免了強制型別轉換的麻煩。
7.上限和下限?
? super e: e、e的父類,固定下邊界。
? extends e: e、e的子類 固定的上邊界。
關於網路的幾個問題
q1 請你分別划划osi的七層網路結構圖,和tcp ip的五層結構圖?1 osi每層功能及特點 a 物理層 為資料鏈路層提供物理連線,在其上序列傳送位元流,即所傳送資料的單位是位元。此外,該層中還具有確定連線裝置的電氣特性和物理特性等功能。b 資料鏈路層 負責在網路節點間的線路上通過檢測 流量控制和...
關於Time Wait的幾個問題
time wait是個常問的問題,tcp網路程式設計中最不容易理解的也是它的time wait狀態,這也說明了tcp ip四次揮手中time wait狀態的重要性。下面通過4個問題來描述它 1.time wait狀態是什麼 2.為什麼會有time wait狀態 3.哪一方會有time wait狀態 ...
關於EOF的幾個問題
1 如何輸入eof ctrl z in win or ctrl d in linux 2 阻塞式以及非阻塞式 輸入緩衝是行緩衝。當從鍵盤上輸入一串字元並按回車後,這些字元會首先被送到輸入緩衝區中儲存。每當按下回車鍵後,cin.get 就會檢測輸入緩衝區中是否有了可讀的資料。cin.get 還會對鍵盤...