1. 程式人生 > >JavaSE—集合框架

JavaSE—集合框架

宣告:本欄目所使用的素材都是凱哥學堂VIP學員所寫,學員有權匿名,對文章有最終解釋權;凱哥學堂旨在促進VIP學員互相學習的基礎上公開筆記。

集合框架:

System.arraycopy: 1.陣列物件 2.從第幾個下表開始拷貝 3.接受的陣列物件 4.從第幾個下表開始存放 5.要拷貝多長

使用System.arraycopy();拷貝方法,拷貝陣列的引數,提高程式碼的執行效率。

image

改善集合每次new物件問題,不要每次傳進引數都要new物件,所以我們在第一次建立物件陣列時長度就為5,如果本次只傳4-5個數據的話那就不需要重新new陣列。然後建立一個屬性index=0,然後objs[index++]=value;後加加,第一個值等於傳進來的val; 問一下現在的陣列長度是否能儲存當前值,不能儲存的話就重新new一個數組,長度是原來陣列的1.75倍,新陣列建立完成後就拷貝老陣列的資料,從老陣列的第0個下表,拷貝給新陣列,新陣列的第0個放,老陣列有多長就拷貝多長,拷貝完成後覆蓋老陣列,讓屬性指向新陣列。 然後objs[index++]=val;賦值。

image

get:用下表得到存放的資料,給一個下表判斷是否大於等於index(儲存下標後加加),大於就說明下標越界了。 size:陣列存放資料的長度。反饋出去。

image

陣列的刪除:陣列的刪除就是覆蓋。 比如我們申請一個數組,數組裡面有“A”,“B”,“C”“D”,“E”,“F”,“G”。 假設我們要刪除下標為3裡面的資料,就猶如把“E”,“F”,“G”,複製一份貼上在從 下標3開始的陣列內。刪除最後一個就直接陣列長度減減。

image

判斷下標是否越界,是越界的話直接丟擲越界異常。 下標沒越界的情況下詢問它是不是要刪除最後一個,是刪除最後一個把該下標等於空。陣列長度是7的話,減減後就是6,也就是陣列對應的下標6,應為陣列下標從0開始。(因為java在沒有記憶體地址指向引用的情況下才會回收記憶體) 刪除第一個的話,就是用System.arrycopy();老陣列從下標第i+1個開始拷貝,拷貝給當前自己陣列第i個(要刪除的位置),拷貝長度是老陣列長度減去-i-1的長度。

image

image

測試:移除第一個。

image

縮儲存容器:請問當前objs.length/index>=3,符合的話就新申請一個數組,陣列長度是來陣列的2分之一,然後將老陣列的第0個開始拷貝給新陣列的0個,老陣列有多長就放多長。(長度能被3整除刪除一半的陣列長度)

image