java ArrayList动态数组的实现

本文详细介绍了Java中的动态数组ArrayList,包括其与静态数组的区别、声明方式、增删改查操作以及二维数组的应用。ArrayList作为动态数组,允许在运行时动态调整大小,提供了丰富的操作方法如add、remove、set等。此外,还展示了如何遍历ArrayList以及toArray方法的正确使用。
摘要由CSDN通过智能技术生成

什么是动态数组?
我们先来说一下静态数组
初始化一个数组的方式:

//静态初始化
int [] a = new int [] {1,2,4};
//简写
int [] b = {1,2,4};

//动态初始化
int [] c = new int [3];  //指定长度,数组的长度不能改变
//没有赋值,java会赋给初始值
//int :0
//double: 0.0
//Boolean: false
//String 引用数据类型: null

二维数组:

int [][] d = {{1},{2,3},{4,5,6,},{0}}

//可以看作一个矩阵
1
23
456
0

//遍历数组
for(int i=0;i<d.length;d++){  //外层循环控制行
    for(int j=0;j<d[i].length;j++){ //内层循环控制列
        System.out.print([i][j]);
    }
}

//增强for循环
for(int[] is:d){
    for(int i: is){
        System.out.print(i])
    }
}
//使用Arrays
System.out.println(Arrays.deepToString(d));

静态数组和动态数组最大的区别就是静态数组声明时需要指定长度,而且数组的长度不能改变,当我们需要一个不确定长度的数组时,就可以使用动态数组。

动态数组

1 ArrayList就是动态数组,继承了AbstractList,实现了List。特点:

  • 动态的增加和减少
  • 实现了ICollection和List接口
  • 灵活的设置数组的大小

2 声明一维数组

ArrayList<元素类型> 数组名 = new ArrayList<元素类型> ();
或者
List <元素类型> 数组名 = new ArrayList<>();
// 第一种
ArrayList<Integer> list = new ArrayList<Integer> ();

//第二种
List <Integer> list = new ArrayList<>();

3 一维数组的增删改查

  • 增加 add(元素)
  • 删除remove(int index)
  • 修改 set(int index,元素)
  • 查找 get(int index) 、indexOf(元素)、数组中是否包含某元素contains(元素)
  • 判断是否为空isEmpty()
  • 获取数组长度size()
  • 遍历数组
迭代器遍历
Iterator<Integer> it = list.iterator();
while(it.hasNext()){
    System.out.print(it.next()+" ")
}
 
索引值遍历
for(int i=0;i<list.size();i++){
	System.out.print(list.get(i)+" ")
}
 
for循环遍历
for(Integer a : list){
   System.out.print(a+ " ");
}
遍历ArrayList时,通过索引值遍历效率最高,for循环遍历次之,迭代器遍历最低

  • toArray用法
    有时候,当我们调用ArayList中的 toArray(),可能遇到过抛出java.lang.ClassCastException异常的情况,这是由于toArray()返回的是Objec数组,将Object转换为其它类型(如,将Object]转换为的Integer])则会抛H出java.lang.ClassCastException异常,因为Java不支持向下转型。
    所以—般更常用的是使用另外—种方法进行使用:
<T> T[] toArray(T[] a)
调用toArray(T[]a)返回T[] 可以通过以下方式进行
//toArray用法
//第一种(最常用)
Integer[] integer = list.toArray(new Integer[0]);

//第二种(容易理解)
Integer[] integer1 = new Integer[list.size()];
list.toArray(integer1);

4 声明二维数组

List<List<元素类型>> 数组名 = new ArrayList<List<数组类型>>();
List<List<Integer>> list = new ArrayList<List<Integer>>();

5 二维数组的增删改查

  • 增加和删除主要是通过建立一位数组,进行对二维数组的添加和删除
//增加
List<Integer> row = new ArrayList<Integer>(); //新建一维数组
row.add(1); //给一维数组添加元素
list.add(row); //将一维数组加入到二维数组中

//删除
//remove有两个重载方法
remove(in index);
remove(Object o);
remove(1) //删除索引为1的元素
remove(new Integer(1)) //删除元素1

  • 查找
    一维数组的查找是get(int index),index表示索引;二维数组的查找是.get(row).get(col)
list.get(1).get(2);
  • 修改
对于一维的ArrayList 修改方法为set
list.set(int index 要修改的索引值, 要修改的值)
 
二维的话
只需要 
list.get(i 行号).set(j 列号, 要修改的值)

要是文章对你有帮助的话,就留下一个赞👍把!

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值