Java ArrayList 类(详解)
ArrayList
- 一、ArrayList 是什么?
- 二、Java ArrayList 方法
- 三、案例演示
- 结果:
一、ArrayList 是什么?
ArrayList 类是一个可以动态修改的数组,与普通数组的区别就是它是没有固定大小的限制,我们可以添加或删除元素。
ArrayList 继承了 AbstractList ,并实现了 List 接口。
ArrayList 类位于 java.util 包中,使用前需要引入它,语法格式如下:
import java.util.ArrayList; // 引入 ArrayList 类ArrayList<E> objectName =new ArrayList<>(); // 初始化
E: 泛型数据类型,用于设置 objectName 的数据类型,只能为引用数据类型。
objectName: 对象名。
二、Java ArrayList 方法
Java ArrayList 常用方法列表如下:
方法 | 描述 |
---|---|
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 中每一个元素并执行特定操作 |
三、案例演示
import java.util.ArrayList;
import java.util.Comparator;/*** @Description: $ArrayList案例演示* @Author: dyq* @Date: $2021年2月3日*/
public class ArrayListTest {public static void main(String[] args) {// 初始化一个String类型的数组ArrayList<String> a = new ArrayList();// 设置 arraylist的容量大小 nsureCapacity() 方法将动态数组大小调整为可以存放 6 个元素。//Java 中的 ArrayList 可动态调整大小。也就是说,如果我们在 arraylist 中添加 3 个以上的元素,它将自动调整自身大小,a.ensureCapacity(6);//add()方法增加a.add("妈妈");a.add("爸爸");a.add("哥哥");a.add("姐姐");a.add("弟弟");a.add("妹妹");System.out.println("数组内容为:"+a);System.out.println("元素数量为: "+a.size()); //返回 arraylist 里元素数量System.out.println("第二个元素:"+a.get(1)); // 访问第二个元素 ,注意:数组的索引值从 0 开始。a.set(2, "Wiki"); // 第一个参数为索引位置,第二个为要修改的值System.out.println("修改后数组内容为:"+a);a.replaceAll(e -> e.toUpperCase()); // 将所有元素更改为大写System.out.println("数组内容为:"+a);a.remove(3); // 删除第四个元素System.out.println("删除后数组内容为:"+a);/*removeIf() 方法的语法为:arraylist.removeIf(Predicate<E> filter)注:arraylist 是 ArrayList 类的一个对象。filter - 过滤器,判断元素是否要删除* */// 删除名称中带有 哥 的元素a.removeIf(e -> e.contains("哥"));System.out.println("删除名称中带有 哥 的 ArrayList: " + a);//使用 for 来迭代数组列表中的元素System.out.println("用for循环遍历数组为:");for (int i = 0; i < a.size(); i++) {System.out.println(a.get(i));}System.out.println("使用 for-each 来迭代元素");for (String i: a) {System.out.println(i);}// 输出 clone() 方法所返回的值System.out.println("clone() 返回值: " + a.clone());// 检查 Wiki 是否在这个数组中System.out.print("Wiki 是否存在于 arraylist: ");System.out.println(a.contains("Wiki"));// 查找位置索引值为 Wiki 的元素int position1 = a.indexOf("Wiki");System.out.println("Wiki 的索引位置: " + position1); // 注意:数组的索引值从 0 开始。// 元素进行升序排列a.sort(Comparator.naturalOrder());System.out.println("升序排序后: " + a); //升序排序后: [妈妈, 妹妹, 弟弟, 爸爸]// 降序a.sort(Comparator.reverseOrder());System.out.println("降序排序: " + a); //降序排序: [爸爸, 弟弟, 妹妹, 妈妈]// 将ArrayList转换为String类型/* String list = a.toString();System.out.println("转String类型后: " + list);*/// 获取 妈妈 最后一次出现的位置int position = a.lastIndexOf("妈妈");System.out.println("妈妈 最后出现的位置: " + position); //注意: Wiki已经 不在 arraylist 中若要查找 则会返回 -1// 调整容量为3 trimToSize() 方法可以删除未分配的空间并更改 ArrayList 的容量,使其等于 ArrayList 中的元素个数。a.trimToSize();System.out.println("ArrayList 1 大小: " + a.size());System.out.println("ArrayList 1: " + a);// 创建另一个动态数组ArrayList<String> a1 = new ArrayList<>();// 往动态数组中添加元素//a1.add("舅舅");a1.add("妈妈");a1.add("妹妹");System.out.println("ArrayList 2: " + a1);// 在a 和 a1 中保留公共的元素(取交集的意思)a1.retainAll(a);System.out.println("保留的元素: " + a1);// 检查动态数组1是否包含动态数组2 (包含与被包含的关系)boolean result1 = a.containsAll(a1);System.out.println("a 包含了a1 的所有元素: " + result1); //true// 检查数组2是否包含数组1boolean result2 = a1.containsAll(a);System.out.println("a1 包含了 a 的所有元素: " + result2);//removeAll() 和 clear() 方法功能都是一样都。但是 clear() 方法的比 removeAll() 更常被用到,因为 clear() 比 removeAll() 更快,更高效。// 删除所有元素/* a.clear();System.out.println("所有 clear() 方法后: " + a);*//*// 删除所有元素a.removeAll(a);System.out.println("所有 removeAll() 方法后: " + a);*/// 删除元素 Wikiboolean result = a.remove("Wiki");System.out.println("Wiki 是否被删除? " + result);System.out.println("修改后数组内容为:"+a);// 检查该数组是否为空result = a.isEmpty(); // falseSystem.out.println("数组 a 是否为空? " + result);// 元素位置为1到3 subList() 该 subList() 方法获取索引 1 到 3(不包括 3)元素 所以返回索引为1-2的数//System.out.println("元素位置为1到3 SubList: " + a.subList(1, 3));// 删除从索引值1到3的元素 removeRange() 方法是受保护的,所以如果要使用需要继承 ArrayList 类,继承后我们就可以使用 Main 类来创建一个动态数组。//removeRange() 方法不常用,我们通常可以使用 ArrayList subList() 和 ArrayList clear() 方法来实现删除元素。// 已经不用这个了 a.removeRange(1, 3);a.subList(1, 3).clear();System.out.println("删除后的 ArrayList: " + a);}
}
结果:
数组内容为:[妈妈, 爸爸, 哥哥, 姐姐, 弟弟, 妹妹]
元素数量为: 6
第二个元素:爸爸
修改后数组内容为:[妈妈, 爸爸, Wiki, 姐姐, 弟弟, 妹妹]
数组内容为:[妈妈, 爸爸, WIKI, 姐姐, 弟弟, 妹妹]
删除后数组内容为:[妈妈, 爸爸, WIKI, 弟弟, 妹妹]
删除名称中带有 哥 的 ArrayList: [妈妈, 爸爸, WIKI, 弟弟, 妹妹]
用for循环遍历数组为:
妈妈
爸爸
WIKI
弟弟
妹妹
使用 for-each 来迭代元素
妈妈
爸爸
WIKI
弟弟
妹妹
clone() 返回值: [妈妈, 爸爸, WIKI, 弟弟, 妹妹]
Wiki 是否存在于 arraylist: false
Wiki 的索引位置: -1
升序排序后: [WIKI, 妈妈, 妹妹, 弟弟, 爸爸]
降序排序: [爸爸, 弟弟, 妹妹, 妈妈, WIKI]
妈妈 最后出现的位置: 3
ArrayList 1 大小: 5
ArrayList 1: [爸爸, 弟弟, 妹妹, 妈妈, WIKI]
ArrayList 2: [妈妈, 妹妹]
保留的元素: [妈妈, 妹妹]
a 包含了a1 的所有元素: true
a1 包含了 a 的所有元素: false
Wiki 是否被删除? false
修改后数组内容为:[爸爸, 弟弟, 妹妹, 妈妈, WIKI]
数组 a 是否为空? false
删除后的 ArrayList: [爸爸, 妈妈, WIKI]
Java ArrayList 类(详解)相关推荐
- Java Pattern类详解
Java Pattern类详解 Pattern在java.util.regex包中,是正则表达式的编译表示形式,此类的实例是不可变的,可供多个并发线程安全使用. 定义 public final cla ...
- java remove removeat_2016.3.12 Java中ArrayList类详解(转)
1.什么是ArrayList ArrayList就是传说中的动态数组,用MSDN中的说法,就是Array的复杂版本,它提供了如下一些好处: 动态的增加和减少元素 实现了ICollection和ILis ...
- java二维数组添加元素_Java二维数组与动态数组ArrayList类详解
java二维数组 java 语言中提供的数组是用来存储固定大小的同类型元素. 1.二维数组初始化和声明 数组变量的声明,和创建数组可以用一条语句完成,如下所示: int a[][] = new int ...
- java Random类详解
2019独角兽企业重金招聘Python工程师标准>>> Random类 (java.util) Random类中实现的随机算法是伪随机,也就是有规则的随机.在进行随机时,随机算法的起 ...
- java file类详解_Java File类详解及IO介绍及使用
我是一个CPU:这个世界慢!死!了!,可以感受到CPU,内存和硬盘之间的速度比较. 文件的本质 OS(操作系统)的目的就是可以让上层程序可以通过一种统一的方式去拿到无论什么磁盘里的文件(即一段字节流) ...
- java 排序工具类_List 排序 Java工具类详解
/** ############################################################################# # DESCRIBE 关于给Vect ...
- Java File类详解
在 Java 中,File 类是 java.io 包中唯一代表磁盘文件本身的对象,也就是说,如果希望在程序中操作文件和目录,则都可以通过 File 类来完成.File 类定义了一些方法来操作文件,如新 ...
- Java System类详解
System 类位于 java.lang 包,代表当前 Java 程序的运行平台,系统级的很多属性和控制方法都放置在该类的内部.由于该类的构造方法是 private 的,所以无法创建该类的对象,也就是 ...
- Java Object类详解
Object 是 Java 类库中的一个特殊类,也是所有类的父类.也就是说,Java 允许把任何类型的对象赋给 Object 类型的变量.当一个类被定义后,如果没有指定继承的父类,那么默认父类就是 O ...
最新文章
- @HostListener 可接收的事件列表
- CDE桌面环境中自动启动应用程序图形界面
- 14行代码AC_Zero Array(思维)
- 数据中心细节_当细节很重要时数据不平衡
- leetcode-回文链表
- 汇知考轻松职称计算机辅导软件,汇知考轻松
- spring-aspectj的几个aop注解
- webpack入门总结1
- Matlab 遗传算法gaot、gatbx工具箱安装(出现未找到 ‘initializega‘、‘crtbp‘等错误)
- 北斗三号频点_解码北斗三号
- 利用HTML简单语句来制作个人简历
- windows MSOCache删除
- 2020届春招实习面经(含阿里、腾讯、网易、京东、华为、美团、快手、字节跳动)
- 计算机课老鼠控制电脑,幼儿园大班语言教案《小老鼠玩电脑》
- XTP中CXTPReportControl中合并单元格
- 新年寄语 —— 奋斗2020
- (c++)两道关于日期相减的题目
- 小米盒子3的刷机方式
- 游戏开发中,图片资源的精简
- 【VBA研究】如何防止用户关闭窗体
热门文章
- 利用iOS的UICollectionView制作卡片翻页放大缩小效果
- 2017年软件评测师上午真题 + 答案(一)
- 精选Android中高级面试题 -- 终结篇:高级干货
- mac 不显示 外接屏幕_Mac外接显示器的显示模式及设置教程
- 验证码识别(Tess4J初体验)
- CDH6.3.2集群变更IP配置修改
- 记录一下困扰我多天的问题————PDF.js工具的跨域访问pdf文件
- 【C语言】验证卡布列克运算。
- (ss = xx.read())!=-1)的含义
- react中函数式组件React Hooks