您的位置:首页 > 编程语言 > Java开发

Java学习记录|创建自己的集合类并扩展功能

2020-03-28 20:15 134 查看

创建自己的集合类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学院】

  • 点赞
  • 收藏
  • 分享
  • 文章举报
nanali_lili 发布了15 篇原创文章 · 获赞 0 · 访问量 262 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: