首先,我们先看看jdk帮助文档是怎么概述ArrayList的:
可调整大小的数组的实现List接口。 实现所有可选列表操作,并允许所有元素,包括null 。 除了实现List 接口之外,该类还提供了一些方法来操纵内部使用的存储列表的数组的大小。 (这个类是大致相当于Vector,不同之处在于它是不同步的)。
该size,isEmpty,get,set,iterator和listIterator操作在固定时间内运行。 add操作以摊余常数运行 ,即添加n个元素需要O(n)个时间。 所有其他操作都以线性时间运行(粗略地说)。 与LinkedList实施相比,常数因子较低。
每个ArrayList实例都有一个容量 。 容量是用于存储列表中的元素的数组的大小。 它总是至少与列表大小一样大。 当元素添加到ArrayList时,其容量会自动增长。 没有规定增长政策的细节,除了添加元素具有不变的摊销时间成本。
应用程序可以添加大量使用ensureCapacity操作元件的前增大ArrayList实例的容量。 这可能会减少增量重新分配的数量。
ArrayList()
构造一个初始容量为十的空列表。
ArrayList(Collection<? extends E> c)
构造一个包含指定集合的元素的列表,按照它们由集合的迭代器返回的顺序。
ArrayList(int initialCapacity)
构造具有指定初始容量的空列表。
public class ArrayListDemo01 { public static void main(String[] args) { //ArrayList<String> arrayList = new ArrayList<>(); ArrayList<String> arrayList1 = new ArrayList<String>(); arrayList1.add("hello"); arrayList1.add("world"); //指定位置添加,原位置的元素往后移动 arrayList1.add(0,"天龙真人"); /* * 集合的索引越界 IndexOutOfBoundsException: Index: 3, Size: 2 * 这里集合的长度就只有2,在第三位添加元素,是错误的操作! * */ // arrayList1.add(3,"java");//报错 ndexOutOfBoundsException: Index: 3, Size: 2 System.out.println(arrayList1); } }
public class ArrayListDemo01 { public static void main(String[] args) { //ArrayList<String> arrayList = new ArrayList<>(); ArrayList<String> arrayList1 = new ArrayList<String>(); arrayList1.add("hello"); arrayList1.add("world"); //指定位置添加,原位置的元素往后移动 arrayList1.add(0, "天龙真人"); /* * 集合的索引越界 IndexOutOfBoundsException: Index: 3, Size: 2 * 这里集合的长度就只有2,在第三位添加元素,是错误的操作! * */ // arrayList1.add(3,"java");//报错 ndexOutOfBoundsException: Index: 3, Size: 2 System.out.println("替换前:" + arrayList1); arrayList1.set(0, "java");//用指定的元素替换此列表中指定位置的元素。 System.out.println("替换后:" + arrayList1); } }
替换前:[天龙真人, hello, world] 替换后:[java, hello, world]
//删除操作~ // 直接删除 || 按索引删除 arrayList1.remove("hello"); System.out.println("直接删除后是:"+arrayList1); arrayList1.remove(1);//删除的是索引1的位置 System.out.println("按索引删除后是:"+arrayList1);
操作前:[天龙真人, hello, world] 直接删除后是:[天龙真人, world] 按索引删除后是:[天龙真人]
//查:返回指定索引处的元素 System.out.printf("返回:"+arrayList1.get(2));
直接上代码:
public class ArrayListDemo02 { public static void main(String[] args) { //创建一个新的集合对象 ArrayList<String> arrayList = new ArrayList<String>(); arrayList.add("我是1"); arrayList.add("我是2"); arrayList.add("我是3"); //遍历集合的通用格式 for (int i = 0; i < arrayList.size(); i++) { System.out.println("第"+(i+1)+"个元素是:"+arrayList.get(i)); } } }
第1个元素是:我是1 第2个元素是:我是2 第3个元素是:我是3
//遍历集合的通用格式 for (int i = 0; i < arrayList.size(); i++) { System.out.println("第"+(i+1)+"个元素是:"+arrayList.get(i)); //加一个对象 //遍历集合的通用格式2 for (int i = 0; i < arrayList.size(); i++) { String s = arrayList.get(i); System.out.println("第"+(i+1)+"个元素是:"+s); }
先创建一个学生类:
package com.niit.Collection.List.ArrayList; /** * @author 天龙大帅比 * @data 2021/6/28 19:05 */ //学生类 public class StudentDemo { int id; String name; int age; public StudentDemo() { } public StudentDemo(int id, String name, int age) { this.id = id; this.name = name; this.age = age; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }
遍历学生信息:
public class ArrayListDemoStudentInfo { public static void main(String[] args) { ArrayList<StudentDemo> arrayList = new ArrayList<StudentDemo>(); StudentDemo s1 = new StudentDemo(1,"天龙真人",21); StudentDemo s2 = new StudentDemo(1,"小弟1号",20); StudentDemo s3 = new StudentDemo(1,"小弟2号",23); arrayList.add(s1); arrayList.add(s2); arrayList.add(s3); //new printArrayList(arrayList); for (int i = 0; i <arrayList.size() ; i++) { StudentDemo s = arrayList.get(i); System.out.println("id:"+ s.getId() +",name:"+ s.getName() +",age:"+ s.getAge()); } } }
id:1,name:天龙真人,age:21
id:1,name:小弟1号,age:20
id:1,name:小弟2号,age:23
创建学生信息类:
package com.niit.Collection.List.ArrayList; /** * @author 天龙大帅比 * @data 2021/6/28 19:33 */ public class StudentInfo { String name; String age; public StudentInfo(){ } public StudentInfo(String name, String age) { this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getAge() { return age; } public void setAge(String age) { this.age = age; } }
再创建集合,添加键盘输入的元素,再遍历:
public class StudentInfoDemo { public static void main(String[] args) { ArrayList<StudentInfo> arrayList = new ArrayList<>(); /* for (int i = 0; i <3 ; i++) { System.out.println("请输入学生"+(i+1)+"的姓名:"); String name = scanner.nextLine(); System.out.println("请输入学生"+(i+1)+"的年龄:"); String age = scanner.nextLine(); StudentInfo s = new StudentInfo(); s.setName(name); s.setAge(age); //把信息添加进集合 arrayList.add(s); }*/ addStudentInfo(arrayList,3); printArrayList(arrayList); } //写一个方法,把输入的代码放到方法里,提高代码的复用性 public static void addStudentInfo(ArrayList<StudentInfo> arrayList,int i) { Scanner scanner = new Scanner(System.in); for (int j = 0; j <i ; j++) { System.out.println("请输入学生" + (j + 1) + "的姓名:"); String name = scanner.nextLine(); System.out.println("请输入学生" + (j + 1) + "的年龄:"); String age = scanner.nextLine(); StudentInfo s = new StudentInfo(); s.setName(name); s.setAge(age); //把信息添加进集合 arrayList.add(s); } } //遍历集合的通用格式 public static void printArrayList(ArrayList<StudentInfo> arrayList) { System.out.println("遍历的学生信息如下:"); for (int i = 0; i <arrayList.size() ; i++) { StudentInfo s = arrayList.get(i); System.out.println("name:"+ s.getName() +",age:"+ s.getAge()); } } }
运行结果: 请输入学生1的姓名: 天龙真人 请输入学生1的年龄: 21 请输入学生2的姓名: 小弟一号 请输入学生2的年龄: 20 请输入学生3的姓名: 小弟二号 请输入学生3的年龄: 21 name:天龙真人,age:21 name:小弟一号,age:20 name:小弟二号,age:21
这个小项目修修改改的弄了一晚上,也算是大致完成了,加深了集合的使用,也复习了之前的一些内容。
首先,肯定要创建一个学生类
这里很简单,就直接上代码了!
package com.niit.Collection.StudentManage; /** * @author 天龙大帅比 * @data 2021/6/28 20:58 */ public class Student { String sid; String name; String age; String address; public Student() { } public Student(String sid, String name, String age, String address) { this.sid = sid; this.name = name; this.age = age; this.address = address; } public String getSid() { return sid; } public void setSid(String sid) { this.sid = sid; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getAge() { return age; } public void setAge(String age) { this.age = age; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } }
下面写我们的main方法
思路:
首先,肯定是要把我们学生管理系统的主界面写出来,简单的几个“sout”就行了。然后要给他实现重复选择,加个while循环,当选择“退出系统”的时候跳出while循环。里面放switch方法。之后,写几个静态类方法-分别实现增 删 改 查,放在switch方法调用就行了!
开整开整!!
本来是前一天发的,然后寝室断电没网了,就没发,我再总结一下,然后写一篇单独的博客