1. 程式人生 > >集合框架之數組集合算法

集合框架之數組集合算法

java


如何檢測程序的健康程度?

如果想要知道程序運行所占的CPU和內存的情況可以使用飛行器,這樣就可以知道程序的穩定性了。在JDK的bin目錄下可以找到飛行器。如下圖: 技術分享

數組集合算法:

1.數組與集合的區別和聯系: 數組是有限存儲(規定了數組長度就只能存儲那麽多值),而集合是無限存儲,但其實集合也是由數組做成的。

2.數組集合算法的原理: 當向集合裏面存儲一個值時,集合裏面會為其申請一個適當長度的數組來存儲,第二次存儲值時,如果數組的長度不足以存儲第二次的值,就重新申請一個長一點的數組,先把原來的數組裏的內容導入進去,再將新的內容存儲進去。也不用擔心原來的數組會浪費內存,因為系統的垃圾回收機制會自動回收。例如:向數組裏面存儲一個A時,申請一個長度為1的數組去存儲,當再向裏面存儲一個B時,因為數組長度不夠,會重新申請一個長度為2的數組,先將原來的A導入進去,再將B存儲進去。原來的數組因為沒有引用就被回收。如下圖: 技術分享3.代碼實現: 3.1 第一個版本 3.1.1 代碼如下: 技術分享技術分享3.1.2 調試如下: 技術分享斷點可以讓程序運行至此就停留,調試(右鍵選擇Debug模式即為調試)時可以使其再一步一步的執行,可以看到其每一步執行的詳細結果。如下: 技術分享技術分享3.1.3 用飛行器檢測的結果 技術分享

3.2 第二個版本:用循環復制值的速度較慢,有一個System.arraycopy方法可以直接連著內存一起復制,這個方法是由其他能直接操控內存的語言(如C)來實現的。 3.2.1 代碼如下: 技術分享3.2.2 用飛行器檢測結果如下: 技術分享3.3 第三個版本:前面兩個在每次存儲值時都要重新申請數組,這樣加長了運行時間,為了減少運行時間可以在每次申請數組時使得新數組的長度是老數組的長度的倍數,雖然會浪費一定的內存,但是浪費少量的內存可以換來更快的運行時間。 3.3.1 代碼如下: 技術分享3.3.2 飛行器檢測結果如下: 技術分享3.4系統寫的版本: 技術分享技術分享3.5標準版: 技術分享

技術分享

技術分享


集合框架之數組集合算法