牛客網 java題庫(21 30)

2021-09-10 09:34:22 字數 1453 閱讀 5630

literator可用來遍歷set和list集合,但是listlterator只能用來遍歷list。

iterator對集合只能是前向遍歷,listiterator既可以前向也可以後向。

listiterator實現了iterator介面,幷包含其他的功能,比如:增加元素,替換元素,獲取前乙個和後乙個元素的索引,等等。

fail-fast 和fail-safe是針對多執行緒安全方面進行考慮的。

fail-fast在訪問時不支援對資料進行修改,它是直接對資料進行訪問的,當發現資料進行修改時就會丟擲concurrent modification exception。

fail-safe在訪問時支援其他執行緒對資料的修改,它將資料拷貝乙份進行遍歷,不會丟擲異常,缺點是若原資料被執行緒若修改了,拷貝執行緒並沒有被修改。

hashmap的底層是用hash陣列和單向鍊錶實現的,當呼叫put()方法時,首先計算key值(鍵值對)的hashcode,定位到合適的陣列索引,然後再在索引的單向鍊錶進行迴圈遍歷用equals比較key是否存在,如果存在則用新的value覆蓋原值,如果沒有則在單向鍊錶的頭部追加。

hashmap的重要屬性是capacity和載入因子loadfactor,預設值分布16和0.75,當容器中的元素個數大於capacity*loadfactor時,容器會進行擴容resize為2n。

在初始化時可以對capacity和loadfactor進行修改,通常loadfactor是0.75不會修改,會修改capacity,如果事先知道容器所要儲存的元素數量,最後才初始化時修改預設容量capacity。

hashmap原始碼詳解:

arraylist是array的加強版,array可以包含基本型別和物件型別,arraylist只能包含物件型別。array的空間大小是固定的,arraylist是動態增長的,如果空間不夠,會動態增長乙個比原來大1.5倍的空間。arraylist會有add removeall ,返回迭代器iterator()等

arraylist基於索引的資料介面,它的底層是陣列。可以o(1)的時間複雜度進行訪問。

linkedlist的插入新增刪除速度較快。

linkedlist比arraylist更佔記憶體,因為linkedlist為每乙個節點儲存了兩個引用乙個指標乙個是下乙個元素。

兩種方式,各有各的特點:使用comparable方式比較時,我們將比較的規則寫入了比較的型別中,其特點是高內聚。但如果哪天這個規則需要修改,那麼我們必須修改這個型別的源**。如果使用comparator方式比較,那麼我們不需要修改比較的類,其特點是易維護,但需要自定義乙個比較器,後續比較規則的修改,僅僅是改這個比較器中的**即可。

priority quene就是資料結構中的最小堆,呼叫remove方法可以得到優先順序佇列中的最小元素,及堆的根節點。

大o符號表示乙個程式執行時所需要的漸進時間複雜度上界。

牛客網資料開發題庫 牛客網資料庫SQL實戰(1)

查詢最晚入職員工的所有資訊 入門 需要查詢最晚入職員工的資訊,即查詢hire date最大的資料,使用倒序並取第乙個人即可。select from employees order by hire date desc limit 0,1 desc 使用order by時在後面加上desc表示倒序,即從...

牛客 題庫 1

1.字串複製函式strcpy 字元陣列1,字元陣列2 字元陣列1的長度應大於等於字元陣列2的長度.說法是否正確?解答 說法正確 strcpy函式 顧名思義字串複製函式 原型宣告 char strcpy char dest,const char src 標頭檔案 include string.h 和 ...

牛客 題庫 遞迴

1.下列 的輸出是?注 print已經宣告過 main print char s 解答 輸出的是 suiene 注意,字母前面有乙個空格 這裡考察了兩個知識點 遞迴和print s 指標先移動,然後呼叫函式。找到一篇講解遞迴的部落格 遞迴演算法 程式呼叫自身的程式設計技巧稱為遞迴 recursion...