聲明:本欄目所使用的素材都是凱哥學堂VIP學員所寫,學員有權匿名,對文章有最終解釋權;凱哥學堂旨在促進VIP學員互相學習的基礎上公開筆記。
集合框架:
System.arraycopy:1.數組對象2.從第幾個下表開始拷貝3.接受的數組對象4.從第幾個下表開始存放5.要拷貝多長
使用System.arraycopy();拷貝方法,拷貝數組的參數,提高代碼的執行效率。
改善集合每次new對象問題,不要每次傳進參數都要new對象,所以我們在第一次創建對象數組時長度就為5,如果本次只傳4-5個數據的話那就不需要重新new數組。然後創建一個屬性index=0,然後objs[index++]=value;後加加,第一個值等於傳進來的val;問一下現在的數組長度是否能存儲當前值,不能存儲的話就重新new一個數組,長度是原來數組的1.75倍,新數組創建完成後就拷貝老數組的數據,從老數組的第0個下表,拷貝給新數組,新數組的第0個放,老數組有多長就拷貝多長,拷貝完成後覆蓋老數組,讓屬性指向新數組。然後objs[index++]=val;賦值。
get:用下表得到存放的數據,給一個下表判斷是否大於等於index(存儲下標後加加),大於就說明下標越界了。size:數組存放數據的長度。反饋出去。
數組的刪除:數組的刪除就是覆蓋。比如我們申請一個數組,數組裡面有「A」,「B」,「C」「D」,「E」,「F」,「G」。假設我們要刪除下標為3裡面的數據,就猶如把「E」,「F」,「G」,複製一份粘貼在從 下標3開始的數組內。刪除最後一個就直接數組長度減減。
判斷下標是否越界,是越界的話直接拋出越界異常。下標沒越界的情況下詢問它是不是要刪除最後一個,是刪除最後一個把該下標等於空。數組長度是7的話,減減後就是6,也就是數組對應的下標6,應為數組下標從0開始。(因為java在沒有內存地址指向引用的情況下才會回收內存)刪除第一個的話,就是用System.arrycopy();老數組從下標第i+1個開始拷貝,拷貝給當前自己數組第i個(要刪除的位置),拷貝長度是老數組長度減去-i-1的長度。
測試:移除第一個。
縮存儲容器:請問當前objs.length/index>=3,符合的話就新申請一個數組,數組長度是來數組的2分之一,然後將老數組的第0個開始拷貝給新數組的0個,老數組有多長就放多長。(長度能被3整除刪除一半的數組長度)