Java動態數組Arraylist存放自定義數據類型
class Point { int x; int y; public Point(int x,int y) { this.x=x; this.y=y; } }
public class Test { public static void main(String[] args) { // TODO Auto-generated method stub ArrayList<Point> myPoint=new ArrayList<Point>(); Point temp=new Point(5,10); myPoint.add(temp); **Point p = (Point)myPoint.get(0);** System.out.println("x的值為:"+p.x); System.out.println("y的值為:"+p.y); } }
ArrayList可以存放任何對象的引用;其是有序的可重復的;取出時是Object對象,需要強制轉化
自定義一個動態數組ArrayList,加深對動態數組的理解
動態數組主要用來保存多個相同類型的數據
主要做添加
添加:首先判斷定義的數組長度是否小于等于原有空間,當滿足這個條件時,就創建一個新的長度變量newlength等于它原有的長度加上原有的長度右移一位(位移比除法的運算速度快)。定義一個新數組newinformation存放數據,用System.arraycopy進行拷貝,將原有數組數據拷貝到新數組。
代碼如下:
測試結果:
- 獲取get():直接判斷下標是否超過數組長度,如果超過就拋出下標越界異常。然后直接根據下標返回該數組對應的值。
代碼如下:
測試結果:
- 改set():首先依舊判斷下標是否越界,直接根據下標給對應數組data[index]把t的值賦給它.
代碼如下:
測試結果如下:
- 刪除remove():首先還是判斷下標是否越界,定義一個T類型的r把要刪除的對應下標數組的值賦值給它。然后判斷下標加1是否等于原有空間大小,在不等于的情況下,把它要刪除下標的后一個值傳給要刪除下標的值,以此類推。把數據最后一位的值定義為空null.最后返回刪除的值。
代碼如下:
測試結果如下:因為刪除了兩次,所以顯示的4
- 獲取數組長度size():直接用return返回this.size的值
代碼如下:
測試結果如下:
- 清空clear():把原有數組定義為初始值10,長度改為初始值0
代碼如下:
總結:如何存儲數據是最基本的操作,我們應該多加練習
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持服務器之家。
原文鏈接:https://blog.csdn.net/Oonelost/article/details/95512104