内容提要
本文介绍了Java中的二维数组、以类为元素类型的数组和ArrayList。二维数组是由一维数组组成的数组,可以通过索引访问和修改元素。类数组是以类为元素类型的数组,可以使用类的方法和属性。ArrayList是一个动态变化长度的数组,可以存储任何类型的数据。文章还提供了一些例题和解题方法。
延伸解读
二维数组的本质与初始化要点
文章指出,Java 中的二维数组本质上是“元素为一维数组的数组”。这意味着每个元素都是一个独立的一维数组,因此可以单独获取其长度(如 arr[0].length)。对于以类为元素的数组,创建时不会自动初始化元素,每个元素默认为 null,必须手动实例化,否则访问属性或方法会引发空指针异常。
类数组在数据关联上的优势
文章通过学生排序例题说明,使用类数组可以将姓名和分数绑定在同一个对象中。如果分开用两个数组存储,排序时需同步交换两个数组的元素,容易出错且代码繁琐。而类数组只需交换对象引用,就能保持数据的对应关系,使代码更简洁、更易维护。
ArrayList 的动态特性与性能注意
ArrayList 的长度可动态变化,支持添加、删除、修改和获取元素。但文章提醒,频繁改变长度会影响性能,因此可用 ensureCapacity 预设容量,或在初始化时指定容量。trimToSize 可在长度稳定后释放多余空间。此外,ArrayList 不能直接存储原始数据类型,需使用对应的包装类。
删除元素时的索引陷阱
文章在删除 ArrayList 元素的例题中强调,每次删除后后续元素会前移,导致索引变化。例如删除偶数索引元素时,只需循环删除从 0 开始、每次递增 1 的位置,直到原长度的一半;删除重复字符串时,内层循环删除后需将索引减一,以确保新移入的元素也被检查。
Q&A
Java中二维数组是什么?如何创建和访问二维数组?
二维数组是由一维数组组成的数组,每个元素都是一个一维数组。创建二维数组的语法为:int[][] arr = new int[3][3]; 访问元素使用两个索引,如arr[1][0]获取第二个数组的第一个元素。
在Java中,以类为元素类型的数组有什么特点?使用时需要注意什么?
以类为元素类型的数组可以存储对象,每个元素都是类的实例,可以调用类的方法和属性。注意:创建数组时不会自动初始化元素,每个元素默认为null,需要手动实例化每个元素。
ArrayList和普通数组有什么区别?ArrayList有哪些常用方法?
ArrayList的长度可以动态变化,而普通数组长度固定。ArrayList可以存储任何类型的数据(但必须是对象类型,不能是原始数据类型)。常用方法包括:add()添加元素、remove()删除元素、get()获取元素、set()修改元素、size()获取长度等。
如何将ArrayList转换为数组?
有两种方法:1. 创建一个相同长度的新数组,然后遍历ArrayList,将元素逐个添加到新数组中;2. 使用toArray方法,例如:String[] array = strings.toArray(new String[strings.size()]);
如何删除ArrayList中的重复元素?
可以使用双重循环,将每个元素与其后面的所有元素比较,如果发现相同元素则删除后面的元素。注意删除后需要将内层循环索引减一,以确保检查被移动的元素。
如何对二维数组进行冒泡排序?
可以将二维数组视为一维序列,使用冒泡排序算法。基本思路是:遍历所有元素,比较相邻元素并交换,重复直到排序完成。优化版可以设置swapped标志,如果某次遍历没有交换则提前结束。