HIT软件构造——JAVA数据结构类型概述之ArrayList

本文从初学者角度详细介绍了Java中ArrayList的主要方法,包括add、addAll、clear、contains、get等,以及如何进行元素的插入、删除、修改和遍历。讲解了indexOf方法用于查找元素索引,set方法替换元素,remove方法删除元素,并探讨了ArrayList的性能特点。还提到了排序、截取子列表和批量操作等高级功能,帮助读者更好地理解和运用ArrayList。
摘要由CSDN通过智能技术生成

Java作为一门便利的面向对象的编程语言,提供多种便利高效的数据结构以及方法当然是很重要的,本文从一个初学者的视角,尽量通俗易懂地整理常用的一些数据结构以及相对应的方法。第一篇主要讲解ArrayList的相关方法。由于常用方法就有许多,初学起来可能感觉难以下手,本文将从主要到次要进行介绍。

ArrayList 类是一个可以动态修改的数组,一般默认容量为10,扩容时容量*1.5,与普通数组的区别就是它是没有固定大小的限制,我们可以添加或删除元素。作为一个数组队列,它提供了相关的添加、删除、修改、遍历等功能。

其常用方法如下:

add() 将元素插入到指定位置的 arraylist 中

addAll()   添加集合中的所有元素到 arraylist 中

clear()      删除 arraylist 中的所有元素

clone()     复制一份 arraylist

contains() 判断元素是否在 arraylist

get() 通过索引值获取 arraylist 中的元素

indexOf() 返回 arraylist 中元素的索引值

removeAll()     删除存在于指定集合中的 arraylist 里的所有元素

remove()  删除 arraylist 里的单个元素

size() 返回 arraylist 里元素数量

isEmpty() 判断 arraylist 是否为空

subList()  截取部分 arraylist 的元素

set()  替换 arraylist 中指定索引的元素

sort() 对 arraylist 元素进行排序

toArray()  将 arraylist 转换为数组

toString() 将 arraylist 转换为字符串

ensureCapacity()    设置指定容量大小的 arraylist

lastIndexOf()   返回指定元素在 arraylist 中最后一次出现的位置

retainAll() 保留 arraylist 中在指定集合中也存在的那些元素

containsAll()   查看 arraylist 是否包含指定集合中的所有元素

trimToSize()    将 arraylist 中的容量调整为数组中的元素个数

removeRange()      删除 arraylist 中指定索引之间存在的元素

replaceAll()     将给定的操作内容替换掉数组中每一个元素

removeIf()       删除所有满足特定条件的 arraylist 元素

forEach()  遍历 arraylist 中每一个元素并执行特定操作

下面对几个实用的方法进行讲解。

add()

add() 方法将元素插入到指定位置的动态数组中,然后该位置与后面的元素全部后移一位。add() 方法的语法为:

arraylist.add(int index,E element)

index为可选参数,表示元素所插入处的索引值。如果 index 没有传入实际参数,元素将追加至数组的最末尾。

element 为要插入的元素,数据类型根据ArrayList的类型而定。

如果成功插入元素,返回 true。如果 index 超出范围,则该 add() 方法抛出 IndexOutOfBoundsException 异常,也就是数组越界的意思。

当我们需要插入一个元素时,最常用的就是add方法,该方法不会替换掉原有的元素,不过add是比较低效的,因为要移动后面的所有数据,也就是说ArrayList不适合插入操作。

indexOf()

indexOf() 方法返回动态数组中元素的索引值。indexOf() 方法的语法为:

arraylist.indexOf(Object obj)

indexOf从动态数组中返回指定元素的位置的索引值。

如果 obj 元素在动态数组中重复出现,返回在数组中最先出现 obj 的元素索引值。

如果动态数组中不存在指定的元素,则该 indexOf() 方法返回 -1。

该方法可以用于查询元素的具体位置。

set()

set() 方法用于替换动态数组中指定索引的元素。set() 方法的语法为:

arraylist.set(int index, E element)

index - 索引位置

element - 将在 index 位置替换进去的新元素

返回之前在 index 位置的元素 。如果 index 值超出范围,则抛出 IndexOutOfBoundsException 异常,也就是数组越界

替换和插入、以及接下来的删除配合使用能实现对数组的修改。

remove()

remove() 方法用于删除动态数组里的单个元素。remove() 方法的语法为:

// 删除指定元素

arraylist.remove(Object obj)

// 删除指定索引位置的元素

arraylist.remove(int index)

obj - 要删除的元素

index - 要删除元素索引值

如果 obj 元素出现多次,则删除在动态数组中最第一次出现的元素。

如果传入元素,删除成功,则返回 true。如果传入索引值,则返回删除的元素。如果指定的索引超出范围,则该方法将抛出 IndexOutOfBoundsException 异常,也就是数组越界。

有了这些基本操作,就可以对ArrayList进行基本的访问与维护,但实际编程时有很多也比较常用的操作,它们如果总是要自己实现还是比较繁琐的,幸运的是java提供了很多人性化的方法进行辅助。

比如,如果我们要删除一系列指定的元素,不需要繁琐地自己遍历,只需要调用removeAll() 方法,就可以从ArrayList中删除指定集合中包含的所有元素,removeAll() 方法的语法为:

arraylist.removeAll(Collection c);

其中c 是动态数组列表中要删除的元素集合

如果从动态数组成功删除元素返回 true。如果动态数组中存在的元素类与指定 collection 的元素类不兼容,则抛出 ClassCastException 异常。如果动态数组中包含 null 元素,并且指定 collection 不允许 null 元素,则抛出 NullPointerException 异常。类似的,可以用addAll() 方法将给定集合中的所有元素添加到 arraylist 中实现批量添加。

排序当然也是非常常规且重要的操作,sort() 方法根据指定的顺序对动态数组中的元素进行排序,并且不返回值而只是对数组进行操作。sort() 方法的语法为:

arraylist.sort(Comparator c)

comparator 为顺序方式,包括Comparator 接口的多种方法,如reverseOrder()降序,naturalOrder()升序。

有时我们需要截取数组的一段,这时候就可以用subList() 方法截取并返回动态数组中的一部分。subList() 方法的语法为:

arraylist.subList(int fromIndex, int toIndex)

fromIndex 是截取元素的起始位置,包含该索引位置元素

toIndex 是截取元素的结束位置,不包含该索引位置元素

返回给定的动态数组截取的部分。如果fromIndex 小于 0 或大于数组的长度,则抛出 IndexOutOfBoundsException 的异常。如果 fromIndex 大于 toIndex 的值则抛出 IllegalArgumentException 异常。要注意的是,该动态数组包含的元素起始于 fromIndex 位置,直到元素索引位置为 toIndex-1,而索引位置 toIndex 的元素并不包括。

当我们需要判断元素最后出现的位置而不是最先出现的,就可以类似IndexOf()使用lastIndexOf() 方法。此外还有许多诸如按索引删除,批量查找等功能也都包括在了上面的这些方法里面,了解它们可以很好的让我们的编程过程更轻松便捷。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值