版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
JavaSE之基础篇(⼗⼀)——ArrayList类详解前⾔ 上篇⽂章给⼤家介绍了API的使⽤教程,主要给⼤家介绍了Java中的API⼿册是如何使⽤,并且⼜介绍了Java中常⽤的String类和StringBuilder类的相关⽤法以及对⽐了⼆者的区别,最后通过XMind的思维导图,为⼤家总结了整篇⽂章介绍的相关知识点,帮助⼤家更好的梳理⽂中相关知识点的重点,同时也为⼤家更好的将java知识点形成⼀棵知识图谱。全⽂⽤了⼤量的案例帮助⼤家更好的理解相应知识点的使⽤。本⽂给⼤家介绍的是Java中⽐较经常⽤到的⼀个类——ArrayList。并且⽂章最后会通过⼀个综合的案例——学⽣管理系统来将ArrayList的⽤法全⾯的应⽤于其中。我们⾸先介绍的就是ArrayList类的相关概念。⼀、ArrayList类1、ArrayList类概述 在Java中,我们经常会把⼀些数据存在⼀个容器中,我们将这些能够存储各种各样的数据的容器称之为集合。如果从Java专业的⾓度来将,集合就是提供⼀种存储空间可变的存储模型,存储的数据容量可以发⽣改变。其特点就是底层是数组实现的,长度可以变化。并且如果我们经常⽤容器的话,会经常会使⽤到⼀种泛型——⽤于约束集合中存储元素的数据类型。2、ArrayList类常⽤⽅法 ArrayList常有如下的构造⽅法: 我们通过⼀个简单案例说明该构造⽅法的使⽤过程:importjava.util.ArrayList;publicclassArrayListDemo01{publicstaticvoidmain(String[]args){//publicArrayList():创建⼀个空的集合对象//ArrayList<String>array=newArrayList<>();ArrayList<String>array=newArrayList<String>();//publicbooleanadd(Ee):将指定的元素追加到此集合的末尾//System.out.println(array.add("hello"));array.add("你好");array.add("⼀计之长");array.add("认真写博客");//publicvoidadd(intindex,Eelement):在此集合中的指定位置插⼊指定的元素array.add(1,"博主");//array.add(3,"javaee");//IndexOutOfBoundsException//array.add(4,"javaee");//输出集合System.out.println("array:"+array);}} 该案例的执⾏结果如下: 其中主要的成员⽅法主要⽤到以下的⼏个: 我们通过⼀个简单的⼩案例来说明ArrayList的相关⽤法。具体实现如下:importjava.util.ArrayList;publicclassArrayListDemo02{publicstaticvoidmain(String[]args){//创建集合ArrayList<String>array=newArrayList<String>();//添加元素array.add("你好");array.add("博主");array.add("⼀计之长");//publicbooleanremove(Objecto):删除指定的元素,返回删除是否成功//System.out.println(array.remove("world"));//System.out.println(array.remove("javaee"));//publicEremove(intindex):删除指定索引处的元素,返回被删除的元素//System.out.println(array.remove(1));//IndexOutOfBoundsException//System.out.println(array.remove(3));//publicEset(intindex,Eelement):修改指定索引处的元素,返回被修改的元素//System.out.println(array.set(1,"javaee"));//IndexOutOfBoundsException//System.out.println(array.set(3,"javaee"));//publicEget(intindex):返回指定索引处的元素//System.out.println(array.get(0));//System.out.println(array.get(1));//System.out.println(array.get(2));//System.out.println(array.get(3));//⾃⼰测试//publicintsize():返回集合中的元素的个数System.out.println(array.size());//输出集合System.out.println("array:"+array);}} 具体执⾏结果如下:3、ArrayList存储字符串并遍历 该案例的具体需求为:创建⼀个存储字符串的集合,存储3个字符串元素,使⽤程序实现在控制台遍历该集合。 我们根据该需求,给出相应的解题思路;具体思路如下: 1:定义学⽣类 2:创建集合对象 3:创建学⽣对象 4:添加学⽣对象到集合中 5:遍历集合,采⽤通⽤遍历格式实现 我们根据该思路,将其转化为相应的代码,具体实现如下:importjava.util.ArrayList;publicclassArrayListTest01{publicstaticvoidmain(String[]args){//创建集合对象ArrayList<String>array=newArrayList<String>();//往集合中添加字符串对象array.add("⼀计之长");array.add("Stefan");array.add("Oliver");//遍历集合的通⽤格式for(inti=0;i<array.size();i++){Strings=array.get(i);System.out.println(s);}}} 我们根据其思路转化的代码具体的执⾏结果如下: 我们对其进⾏稍微的改造以下,具体的需求如下: 创建⼀个存储学⽣对象的集合,存储3个学⽣对象,使⽤程序实现在控制台遍历该集合。 我们根据其需求,给出相应的实现思路: 1:定义学⽣类 2:创建集合对象 3:创建学⽣对象 4:添加学⽣对象到集合中 5:遍历集合,采⽤通⽤遍历格式实现 我们根据其思路实现如下的代码:publicclassStudent{privateStringname;privateintage;publicStudent(){}publicStudent(Stringname,intage){=name;this.age=age;}publicvoidsetName(Stringname){=name;}publicStringgetName(){returnname;}publicvoidsetAge(intage){this.age=age;}publicintgetAge(){returnage;}}importjava.util.ArrayList;publicclassArrayListTest02{publicstaticvoidmain(String[]args){//创建集合对象ArrayList<Student>array=newArrayList<Student>();//创建学⽣对象Students1=newStudent("⼀计之长",26);Students2=newStudent("stefan",33);Students3=newStudent("Napoleon",18);//添加学⽣对象到集合中array.add(s1);array.add(s2);array.add(s3);//遍历集合,采⽤通⽤遍历格式实现for(inti=0;i<array.size();i++){Students=array.get(i);System.out.println(s.getName()+","+s.getAge());}}} 具体执⾏的结果如下: 我们将其案例再次改造,具体需求变为如下: 创建⼀个存储学⽣对象的集合,存储3个学⽣对象,使⽤程序实现在控制台遍历该集合;学⽣的姓名和年龄来⾃于键盘录⼊。 我们通过以上的需求给出如下的实现思路: 1:定义学⽣类,为了键盘录⼊数据⽅便,把学⽣类中的成员变量都定义为String类型 2:创建集合对象 3:键盘录⼊学⽣对象所需要的数据 4:创建学⽣对象,把键盘录⼊的数据赋值给学⽣对象的成员变量 5:往集合中添加学⽣对象 6:遍历集合,采⽤通⽤遍历格式实现 我们根据其思路实现如下的代码:publicclassStudent{privateStringname;privateStringage;publicStudent(){}publicStudent(Stringname,Stringage){=name;this.age=age;}publicStringgetName(){returnname;}publicvoidsetName(Stringname){=name;}publicStringgetAge(){returnage;}publicvoidsetAge(Stringage){this.age=age;}}importjava.util.ArrayList;importjava.util.Scanner;publicclassArrayListTest{publicstaticvoidmain(String[]args){//创建集合对象ArrayList<Student>array=newArrayList<Student>();//为了提⾼代码的复⽤性,我们⽤⽅法来改进程序addStudent(array);addStudent(array);addStudent(array);//遍历集合,采⽤通⽤遍历格式实现for(inti=0;i<array.size();i++){Students=array.get(i);System.out.println(s.getName()+","+s.getAge());}}/*两个明确:返回值类型:void参数:ArrayList<Student>array*/publicstaticvoidaddStudent(ArrayList<Student>array){//键盘录⼊学⽣对象所需要的数据Scannersc=newScanner(System.in);System.out.println("请输⼊学⽣姓名:");Stringname=sc.nextLine();System.out.println("请输⼊学⽣年龄:");Stringage=sc.nextLine();//创建学⽣对象,把键盘录⼊的数据赋值给学⽣对象的成员变量Students=newStudent();s.setName(name);s.setAge(age);//往集合中添加学⽣对象array.add(s);}} 具体执⾏结果如下: ⾄此,我们java中常见的ArrayList就给⼤家全部介绍完毕了,接下来给⼤家通过⼀个综合的案例将其的⽤法综合性的展⽰出来。⼆、学⽣管理系统 我们接下来通过⼀个“学⽣管理系统”的案例给⼤家初步实现⼀个系统的雏形,这个案例⼤概能够简单实现对⼀个学⽣实现增删改查的基本操作,具体的实现步骤如下:1、学⽣管理系统实现步骤 相应的案例需求如下:针对⽬前我们的所学内容,完成⼀个综合案例:学⽣管理系统!该系统主要功能如下: 添加学⽣:通过键盘录⼊学⽣信息,添加到集合中 删除学⽣:通过键盘录⼊要删除学⽣的学号,将该学⽣对象从集合中删除 修改学⽣:通过键盘录⼊要修改学⽣的学号,将该学⽣对象其他信息进⾏修改 查看学⽣:将集合中的学⽣对象信息进⾏展⽰ 退出系统:结束程序 根据其需求,我们给出以下的实现思路:1.定义学⽣类,包含以下成员变量`privateStringsid`//学⽣id`privateStringname`//学⽣姓名`privateStringage`//学⽣年龄`privateStringaddress`//学⽣所在地2.学⽣管理系统主界⾯的搭建步骤2.1⽤输出语句完成主界⾯的编写2.2⽤Scanner实现键盘输⼊2.3⽤switch语句完成选择的功能2.4⽤循环完成功能结束后再次回到主界⾯3.学⽣管理系统的添加学⽣功能实现步骤3.1定义⼀个⽅法,接收ArrayList<Student>集合3.2⽅法内完成添加学⽣的功能 ①键盘录⼊学⽣信息 ②根据录⼊的信息创建学⽣对象 ③将学⽣对象添加到集合中 ④提⽰添加成功信息3.3在添加学⽣的选项⾥调⽤添加学⽣的⽅法4.学⽣管理系统的查看学⽣功能实现步骤4.1定义⼀个⽅法,接收ArrayList<Student>集合4.2⽅法内遍历集合,将学⽣信息进⾏输出4.3在查看所有学⽣选项⾥调⽤查看学⽣⽅法5.学⽣管理系统的删除学⽣功能实现步骤5.1定义⼀个⽅法,接收ArrayList<Student>5.2⽅法中接收要删除学⽣的学号5.3遍历集合,获取每个学⽣对象集合5.4使⽤学⽣对象的学号和录⼊的要删除的学号进⾏⽐较,如果相同,则将当前学⽣对象从集合中删除5.5在删除学⽣选项⾥调⽤删除学⽣的⽅法6.学⽣管理系统的修改学⽣功能实现步骤6.1定义⼀个⽅法,接收ArrayList<Student>6.2⽅法中接收要修改学⽣的学号集合6.3通过键盘录⼊学⽣对象所需的信息,并创建对象6.4遍历集合,获取每⼀个学⽣对象。并和录⼊的修改学⽣学号进⾏⽐较.如果相同,则使⽤新学⽣对象替换当前学⽣对象6.5在修改学⽣选项⾥调⽤修改学⽣的⽅法7.退出系统使⽤System.exit(0);退出JVM 接下来,我们就是通过代码将以上的思路进⾏⼀步⼀步地实现了,⾸先就是给出学⽣类的定义。2、学⽣类的定义 我们程序对应的学⽣类具体实现如下:publicclassStudent{//学号privateStringsid;//姓名privateStringname;//年龄privateStringage;//居住地privateStringaddress;publicStudent(){}publicStudent(Stringsid,Stringname,Stringage,Stringaddress){this.sid=sid;=name;this.age=age;this.address=address;}publicStringgetSid(){returnsid;}publicvoidsetSid(Stringsid){this.sid=sid;}publicStringgetName(){returnname;}publicvoidsetName(Stringname){=name;}publicStringgetAge(){returnage;}publicvoidsetAge(Stringage){this.age=age;}publicStringgetAddress(){returnaddress;}publicvoidsetAddress(Stringaddress){this.address=address;}} 接下来,我们就是根据其思路实现相应的代码;3、学⽣管理系统的实现 我们根据学⽣管理系统给出的具体思路来对其进⾏相应的实现,具体的实现如下:importjava.util.ArrayList;importjava.util.Scanner;/*学⽣管理系统*/publicclassStudentManager{publicstaticvoidmain(String[]args){publicstaticvoidmain(String[]args){//创建集合对象,⽤于存储学⽣数据ArrayList<Student>array=newArrayList<Student>();//⽤循环完成再次回到主界⾯while(true){//⽤输出语句完成主界⾯的编写System.out.println("--------欢迎来到学⽣管理系统--------");System.out.println("1添加学⽣");System.out.println("2删除学⽣");System.out.println("3修改学⽣");System.out.println("4查看所有学⽣");System.out.println("5退出");System.out.println("请输⼊你的选择:");//⽤Scanner实现键盘录⼊数据Scannersc=newScanner(System.in);Stringline=sc.nextLine();//⽤switch语句完成操作的选择switch(line){case"1":addStudent(array);break;case"2":deleteStudent(array);break;case"3"://System.out.println("修改学⽣");updateStudent(array);break;case"4":findAllStudent(array);break;case"5":System.out.println("谢谢使⽤");System.exit(0);//JVM退出}}}//定义⼀个⽅法,⽤于添加学⽣信息publicstaticvoidaddStudent(ArrayList<Student>array){//键盘录⼊学⽣对象所需要的数据,显⽰提⽰信息,提⽰要输⼊何种信息Scannersc=newScanner(System.in);//为了让sid在while循环外⾯被访问到,我们就把它定义在了循环外Stringsid;//为了让程序能够回到这⾥,我们使⽤循环实现while(true){System.out.println("请输⼊学⽣学号:");sid=sc.nextLine();booleanflag=isUsed(array,sid);if(flag){System.out.println("你输⼊的学号已经被使⽤,请重新输⼊");}else{break;}}System.out.println("请输⼊学⽣姓名:");Stringname=sc.nextLine();System.out.println("请输⼊学⽣年龄:");Stringage=sc.nextLine();System.out.println("请输⼊学⽣居住地:");Stringaddress=sc.nextLine();//创建学⽣对象,把键盘录⼊的数据赋值给学⽣对象的成员变量Students=newStudent();s.setSid(sid);s.setName(name);s.setName(name);s.setAge(age);s.setAddress(address);//将学⽣对象添加到集合中array.add(s);//给出添加成功提⽰System.out.println("添加学⽣成功");}//定义⼀个⽅法,判断学号是否被使⽤publicstaticbooleanisUsed(ArrayList<Student>array,Stringsid){//如果与集合中的某⼀个学⽣学号相同,返回true;如果都不相同,返回falsebooleanflag=false;for(inti=0;i<array.size();i++){Students=array.get(i);if(s.getSid().equals(sid)){flag=true;break;}}returnflag;}//定义⼀个⽅法,⽤于查看学⽣信息publicstaticvoidfindAllStudent(ArrayList<Student>array){//判断集合中是否有数据,如果没有显⽰提⽰信息if(array.size()==0){System.out.println("⽆信息,请先添加信息再查询");//为了让程序不在往下执⾏,给出return;return;}//显⽰表头信息//\t其实就是tab键的位置System.out.println("学号\t\t\t姓名\t\t年龄\t\t居住地");//将集合中数据取出按照对应格式显⽰学⽣信息,年龄显⽰补充“岁”for(inti=0;i<array.size();i++){Students=array.get(i);System.out.println(s.getSid()+"\t"+s.getName()+"\t"+s.getAge()+"岁\t\t"+s.getAddress());}}//定义⼀个⽅法,⽤于删除学⽣信息publicstaticvoiddeleteStudent(ArrayList<Student>array){//键盘录⼊要删除的学⽣学号,显⽰提⽰信息Scannersc=newScanner(System.in);System.out.println("请输⼊你要删除的学⽣的学号:");Stringsid=sc.nextLine();//在删除/修改学⽣操作前,对学号是否存在进⾏判断//如果不存在,显⽰提⽰信息//如果存在,执⾏删除/修改操作intindex=-1;for(inti=0;i<array.size();i++){Students=array.get(i);if(s.getSid().equals(sid)){//intindex=i;index=i;break;}}if(index==-1){System.out.println("该信息不存在,请重新输⼊");}else{array.remove(index);//给出删除成功提⽰System.out.println("删除学⽣成功");}}//定义⼀个⽅法,⽤于修改学⽣信息publicstaticvoidupdateStudent(ArrayList<Student>array){//键盘录⼊要修改的学⽣学号,显⽰提⽰信息Scannersc=newScanner(System.in);System.out.println("请输⼊你要修改的学⽣的学号:");Stringsid=sc.nextLine();//键盘录⼊要修改的学⽣信息System.out.println("请输⼊学⽣新姓名:");S
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 中国电子闪光蜂鸣器项目投资可行性研究报告
- 企业资源优化配置方案
- 中国多用餐盒项目投资可行性研究报告
- 中国绕毛项目投资可行性研究报告
- 手机能源材料行业深度研究报告
- 三斗柜行业深度研究报告
- 2026年中国防水涂层材料行业市场前景预测及投资价值评估分析报告
- 2025年阳泉中考听力真题及答案
- 燃气管网改造实施方案
- 体育共建协议书模板
- 甜面酱企业风险管控及隐患清单资料
- 河北雄安新区招考聘用专职社区工作者41人笔试历年难易错点考题含答案带详细解析
- 柳工装载机液压系统演示文稿
- JJF 2036-2023干式生化分析仪校准规范
- 建设工程分部分项工程划分表
- 右室心肌梗死课件
- 工程招投标与合同管理:成本加酬金合同课件
- 苗木种植费用(全费用)
- GB∕T 19557.15-2018 植物品种特异性、一致性和稳定性测试指南 高粱
- 否定前缀练习
- 《测绘法》知识题库
评论
0/150
提交评论