JavaSE从0到1-DAY9-ArrayList

张开发
2026/5/4 1:31:21 15 分钟阅读
JavaSE从0到1-DAY9-ArrayList
Java ArrayList 学习笔记一、这一章在讲什么这一章主要学习的是 Java 里的ArrayList集合也就是一种长度可变的容器。它和数组很像都能存一组数据但数组长度固定而ArrayList更灵活。这一章重点是学会ArrayList的创建方式、泛型写法以及常见的增删改查操作。另外还提到了一个重要限制集合里只能存引用数据类型不能直接存基本数据类型所以会用到包装类。这章属于集合入门核心目标不是研究底层而是先把最常用的基本操作用熟。二、核心概念1. 集合是什么它是什么集合是一种用于存储多个数据的容器ArrayList是最常见的一种集合。有什么作用为什么引入这个概念数组虽然也能存多个数据但长度一旦定义就不能改。集合解决的就是“数据个数不确定”时不方便的问题。它的原理怎么实现的这一章先把它理解成一个能自动管理元素个数的容器即可。你往里面加数据、删数据集合会帮你维护当前内容。初学者容易混淆的点集合不是数组但它们都能存多个元素。最关键区别是数组长度固定ArrayList长度可变。2.ArrayList它是什么ArrayList是 Java 提供的一个集合类。有什么作用用来按顺序存储一批数据适合做“增删改查”。它的原理它会记录每个元素的位置索引所以你可以通过索引取值、改值、删值。初学者容易混淆的点ArrayList的“长度”不是固定容量而是当前有多少个元素通常通过size()获取。3. 泛型它是什么泛型就是写在尖括号里的类型例如ArrayListString中的String。有什么作用用来限制集合里能存什么类型的数据避免乱放。它的原理编译器会根据泛型检查你放进去的数据类型是否一致。初学者容易混淆的点String限制的是集合中的元素类型不是限制变量名也不是限制集合对象本身。示例ArrayListStringlistnewArrayList();list.add(aaa);// 对// list.add(123); // 错因为这里限制的是 String4. 包装类它是什么包装类就是把基本数据类型“包装成对象”的类。有什么作用因为集合里只能放引用数据类型所以如果想在集合里存整数、小数、字符这些基本类型就要用对应包装类。它的原理例如int对应Integerchar对应Character。本质上是“把基本类型变成对象后再存进集合”。初学者容易混淆的点int和Integer不是一回事int是基本数据类型Integer是引用数据类型类常见对应关系int - Integerchar - Characterboolean - Booleandouble - Double5. 索引它是什么索引就是元素的位置编号从0开始。有什么作用可以通过索引精确获取、修改、删除某个位置的数据。它的原理第一个元素索引是0第二个是1依次递增。初学者容易混淆的点插入、获取、修改、删除的索引范围不完全一样这一点很容易写错。三、重难点1.ArrayList和数组最大的区别是长度是否可变结论数组长度固定ArrayList长度可变。原因数组一旦创建长度就定死了ArrayList可以随着元素的增加和删除动态变化。通俗比喻或小例子数组像固定格子的快递柜格子数一开始就定死ArrayList像可调整容量的收纳盒用的时候更灵活。2. 泛型是用来限制集合里元素类型的结论ArrayListString表示这个集合里只能放String。原因不加泛型时集合里理论上什么都能放后面取数据会很乱。加了泛型后数据类型统一更安全。通俗比喻或小例子泛型就像给盒子贴标签“这里只能放书”那你就不能往里塞水果。3. 集合不能直接存基本数据类型要用包装类结论存整数用Integer不能直接写int。原因ArrayList里存的是引用数据类型而int、double这些是基本数据类型不是对象。通俗比喻或小例子集合像一个“只接收盒装物品”的货架基本类型像“散装物品”得先装盒包装类才能放进去。示例ArrayListIntegerlistnewArrayList();list.add(10);list.add(20);4.add(index, e)的索引范围和get/set/remove(index)不一样结论插入时最大可以到size()获取、修改、删除时最大只能到size() - 1。原因插入时允许插到最后但获取、修改、删除必须操作已经存在的位置。通俗比喻或小例子插入像在队伍里安排一个新位置可以插到最后一个人的后面但取人、改人、删人必须这个位置上本来就有人。5. 两个remove方法一定要区分清楚结论remove(E e)是按内容删remove(int index)是按索引删。原因它们方法名一样但删除依据和返回值不同。通俗比喻或小例子一个是“把叫张三的人删掉”一个是“把第 2 个位置的人删掉”。四、代码理解1. 创建集合对象ArrayListStringlistnewArrayList();ArrayListString表示集合里存的是Stringlist集合对象名new ArrayList()创建一个新的集合对象JDK7 开始后面的泛型类型可以省略但尖括号不能丢2. 添加元素ArrayListStringlistnewArrayList();list.add(aaa);list.add(bbb);list.add(ccc);System.out.println(list);说明创建一个字符串集合把aaa、bbb、ccc依次加到末尾最后打印整个集合3. 按索引插入元素ArrayListStringlistnewArrayList();list.add(aaa);list.add(bbb);list.add(ccc);list.add(1,qqq);System.out.println(list);关键理解list.add(1, qqq);表示把qqq插入到索引1原来索引1和后面的元素会向后移输出结果[aaa,qqq,bbb,ccc]4. 删除元素按内容删除booleanreslist.remove(bbb);System.out.println(res);System.out.println(list);说明找到bbb就删除删除成功返回true找不到返回false按索引删除Stringreslist.remove(0);System.out.println(res);System.out.println(list);说明删除索引0的元素返回被删掉的元素如果索引不存在程序会报错5. 修改元素list.set(1,mmm);说明把索引1位置的元素改成mmm6. 获取元素Stringslist.get(0);System.out.println(s);说明获取索引0的元素7. 遍历集合for(inti0;ilist.size();i){Stringslist.get(i);System.out.println(s);}关键理解i list.size()控制循环次数list.get(i)依次取出每个元素语法规则总结数组看长度用length集合看长度用size()集合取元素用get(index)五、易错点把集合写成能存基本数据类型错误写法ArrayListintlistnewArrayList();正确写法ArrayListIntegerlistnewArrayList();忘记写泛型虽然有时不写也能运行但不推荐因为这样类型不统一后面很容易混乱。推荐写法ArrayListStringlistnewArrayList();把size()当成length数组用的是length集合用的是size()这是从数组切换到集合时最常见的错误。索引越界比如当前集合有 3 个元素合法已有索引0、1、2插入时可到3获取 / 修改 / 删除时不能写3分不清两个removeremove(aaa)按内容删remove(0)按索引删六、记忆口诀 / 通俗比喻记忆口诀数组定长集合变长泛型限类型数据不乱放集合存对象基本类型要包装增删改查add、remove、set、get集合看个数用size()通俗比喻数组像固定车位停车场车位数建好就不能改。ArrayList像临时可扩展停车区车多了还能继续安排。泛型像门口贴的标签“这里只能停小汽车”那卡车就不能进。包装类像把散装物品装进盒子才能放进统一管理的仓库。七、应用ArrayList在实际开发里非常常见比如存一个班级的学生姓名存购物车里的商品存搜索结果列表存用户提交的一批数据。例如做一个简单学生名单功能时ArrayListStringstudentsnewArrayList();students.add(张三);students.add(李四);students.add(王五);for(inti0;istudents.size();i){System.out.println(students.get(i));}这里的意思就是用集合存多个学生名字以后可以继续加人、删人、改名字因为人数不固定所以集合比数组更适合。如果以后要存成绩也可以写成ArrayListIntegerscoresnewArrayList();这里就用到了包装类Integer。八、最终总结ArrayList是 Java 中最常用的集合之一本质上是一个长度可变的容器。它和数组最大的区别是数组定长集合变长。使用ArrayList时要掌握三件事泛型、增删改查、遍历。另外要记住集合里不能直接放基本数据类型想放整数等数据时要使用对应的包装类。这章学会后后面很多数据存储、遍历、操作集合的代码都会更容易理解。

更多文章