创建自己的集合类MyArrayList并定义基础功能
(类似简单版本的ArrayList类)
- 定义数组
- 定义数组的索引
- 定义添加数据的add方法
- 定义获得数据的get方法
- 定义获得数据的长度
public class MyArrayList {
private int[] dataArray=new int[100]; //定义数组进行存储,长度为100
private int index=0;//指向数组中的空位置
public void add(int data){//定义一个添加数据的add方法
dataArray[index]=data;
index++;
}
public int get(int index) {
if (index >= 0 && index <= (this.index - 1)) {//this.index返回成员变量
return dataArray[index];
} else { //index不存在
System.out.print("你给的索引" + index + "不存在");
return -1;
}
}
public int size(){
return index;//index会自增
}
}
测试:
增加数据
获得数据
遍历数组
public class test {
public static void main(String[] args) {
MyArrayList list=new MyArrayList();
list.add(100);//只能放int类型的数据
list.add(12);
list.add(122);
list.add(32);
System.out.print(list.get(1));//get方法定义好之后可以使用
System.out.print(list.get(5));//get方法中索引不存在的情况
//遍历数组
for(int i=0;i<list.size();i++){
System.out.print(list.get(i)+" ");
}
}
}
缺点:只能存储int类型
解决:泛型处理
T类型的引入
public class MyArrayList<T>{//Type Integer String Student...
private T[] dataArray=(T[])new Object[100];//Object是所有类型的父类,存储任意类型数组,再把数组强制转成T类型
private int index=0;//指向数组中的空位置
public void add(T data){//定义一个添加数据的add方法
dataArray[index]=data;
index++;
}
public T get(int index) {
if (index >= 0 && index <= (this.index - 1)) {//this.index返回成员变量
return dataArray[index];
} else { //index不存在
System.out.print("你给的索引" + index + "不存在");
return null;
}
}
public int size(){
return index;//index会自增
}
}
测试:
public class test {
public static void main(String[] args) {
MyArrayList<Integer> list=new MyArrayList<Integer>();//泛型
list.add(100);//只能放int类型的数据
list.add(12);
list.add(122);
list.add(32);
System.out.println(list.get(1));//get方法定义好之后可以使用
System.out.print(" ");
System.out.println(list.get(5));//get方法中索引不存在的情况
//遍历
for(int i=0;i<list.size();i++){
System.out.print(list.get(i)+" ");
}
}
}
学习来源:【bilibili siki学院】