AVA基础学习,学习ArrayList,自己尝试写一下方法,加深理解,帮助记忆。
1package com.ezxmt.collection;
2
3import com.ezxmt.hook.Cat;
4import com.ezxmt.hook.Dog;
5
6import java.util.Date;
7
8/**
9 * 学习ArrayList,
10 */
11public class TestArrayList {
12
13 //创建obj数组,用于内部存放数据
14 private Object[] elementDate;
15
16 //大小
17 private int size;
18
19 //构造方法
20 public TestArrayList(){
21 //不指定大小时默认给10
22 this(10);
23 }
24
25 public TestArrayList(int initSize){
26 if(initSize<0){
27 //数组长度小于0,抛出异常
28 try {
29 throw new Exception("数组长度小于0");
30 } catch (Exception e) {
31 throw new RuntimeException(e);
32 }
33 }
34 //初始化数组
35 elementDate = new Object[initSize];
36
37 }
38
39 public void add(Object obj){
40 //判断当前数组是否需要扩容
41 if(size>=elementDate.length){
42 Object[] newArray = new Object[size*2+1];
43 //拷贝数组
44 System.arraycopy(elementDate,0,newArray,0,elementDate.length);
45 //或者for循环读取
46 /*for (int i = 0; i < elementDate.length; i++) {
47 newArray[i] = elementDate[i];
48 }*/
49 elementDate = newArray;
50 }
51
52 //两种写法
53 /* 第一种写法
54 elementDate[size] = obj;
55 size++;
56 */
57 //第二种写法,先处理,后自增
58 elementDate[size++]=obj;
59 }
60
61 //根据下标获取数组对应的元素
62 public Object get(int index){
63 //首先判断下标是否在数组长度范围内
64 if(index<0 || index>=size){
65 try {
66 throw new Exception("数组下标输入错误");
67 } catch (Exception e) {
68 throw new RuntimeException(e);
69 }
70 }
71 //根据下标获取对象并返回
72 return elementDate[index];
73 }
74
75 public int getSize() {
76 return size;
77 }
78
79 //移除指定下标的对象
80 public void remove(int index){
81
82 }
83
84 public static void main(String[] args) {
85 TestArrayList t = new TestArrayList();
86 t.add(123);
87 t.add("912hj98g2");
88 t.add(new Dog());
89 t.add(new Cat());
90 t.add(new Date());
91 t.add("abc");
92 t.add("bcd");
93 t.add("cdf");
94 t.add("alskdjf");
95 t.add(new Dog());
96 t.add("ddd");
97 t.add("bbb");
98
99 System.out.println(t.getSize());
100 System.out.println(t.get(12));
101 }
102}