是一种特殊的数据类型,泛型 如何使用?
在出现E的地方使用引用数据类型替换即可
举例:ArrayList、ArrayList
1.2ArrayList构造方法和添加方法 方法名说明public ArrayList()创建一个空的集合对象public boolean add(E e) 将指定的元素追加到此集合的末尾public void add(index,E element)在此集合中指定位置插入指定的元素package test1;import java.lang.reflect.Array;import java.util.ArrayList;public class arrayListDemo1 { public static void main(String[] args) { //public ArrayList()创建一个空的集合对象 ArrayList array = new ArrayList(); System.out.println("Araay:"+ array); // public boolean add(E e)将指定的元素追加到此集合的末尾 array.add("Hello"); array.add("World"); System.out.println("Araay:"+ array); //public void add(index,E element)在此集合中指定位置插入指定的元素 array.add(1,"521"); //array.add(3,"521");IndexOutOfBoundsException集合索引越界 System.out.println("Araay:"+ array); }}
1.3ArrayList常用方法 方法名说明public boolean remove(Obiect 0) 删除指定元素,返回删除是否成功
public E remove(int index)删除指定索引元素,返回被删除元素public E set(int index,E element) 修改指定索引处的元素,返回被修改元素
public E get(int index)返回指定索引处的元素public int size()返回集合中的元素的个数package test2;import java.util.ArrayList;public class arrayListDemo2 { public static void main(String[] args) { ArrayList array = new ArrayList<>(); array.add("Hello"); array.add("World"); // public boolean remove(Obiect 0)删除指定元素,返回删除是否成功 //System.out.println(array.remove("Hello")); //public E remove(int index)删除指定索引元素,返回被删除元素 //System.out.println(array.remove(1)); //IndexOutOfBoundsException //System.out.println(array.remove(2)); //public E set(int index,E element)修改指定索引处的元素,返回被修改元素 //System.out.println(array.set(0,"1000")); //IndexOutOfBoundsException // System.out.println(array.set(2,"1000")); //public E get(int index)返回指定索引处的元素// System.out.println(array.get(0));// System.out.println(array.get(1)); //IndexOutOfBoundsException// System.out.println(array.get(2)); //public int size()返回集合中的元素的个数 System.out.println(array.size()); System.out.println(array); }}
1.4案例:ArrayList存储字符串并遍历 需求:创建一个存储字符的集合,存储三个字符串元素,使用程序实现在控制台遍历该集合
思路:①创建存储字符串的集合
②使用for循环遍历该集合
③使用get方法获得集合元素
package test3;import java.util.ArrayList;public class arrayListDemo3 { public static void main(String[] args) { //创建存储字符串的集合 ArrayList array = new ArrayList<>(); array.add("Hello"); array.add("10000"); array.add("World"); //使用for循环遍历该集合 for(int i=0;i
1.5案例:存储学生对象并遍历 需求:创建一个存储学生对象的集合,存储三个学生对象,使用程序在控制台遍历这个集合
思路:①首先创建一个学生类,类中定义成员变量age和name,都由private修饰。在类中构造一 个无参的构造方法,再构造一个带参的构造方法,定义setxxx()方法和getxxx()方法
②创建一个集合对象,然后创建学生对象,将学生对象添加到集合对象中
③使用for循环遍历集合,在控制台输出结果
package test4;public class Student { //定义成员变量 private int age; private String name; //构造方法 //无参构造方法 public Student(){ } //带参构造方法 public Student(String name,int age){ this.name = name; this.age = age; } public void setName(String name){ this.name =name; } public String getName(){ return name; } public void setAge(int age){ this.age =age; } public int getAge(){ return age; }}
package test4;import java.util.ArrayList;public class arrayListDemo4 { public static void main(String[] args) { //创建集合对象 ArrayList studentArrayList = new ArrayList(); //创建学生对象 Student s1 = new Student("吴彦祖",58); Student s2 = new Student("林青霞", 40); Student s3 = new Student("张国荣", 50); //使用add方法将学生对象添加到集合中 studentArrayList.add(s1); studentArrayList.add(s2); studentArrayList.add(s3); //使用for循环遍历集合 for(int i=0;i
1.6案例: 存储学生对象并遍历升级版 需求:创建一个存储学生对象的集合,存储三个学生对象,使用程序在控制台遍历这个集合,学 生的姓名和年龄来自键盘录入。
思路:①首先创建一个学生类,类中定义成员变量age和name,都由private修饰。在类中构造一 个无参的构造方法,再构造一个带参的构造方法,定义setxxx()方法和getxxx()方法
②创建一个集合对象,然后创建Scanner对象,从键盘获取输入,创建学生对象,使用 setxxx()方法通过传递键盘录入的参数的方式,对学生属性进行赋值。最后把学生对象添 加到集合中。但是为了提高代码的复用性,这里使用定义了一个方法来实现
③使用for循环遍历集合,在控制台输出结果
package test5;public class Student { private int age; private String name; public Student(){} public Student(String name,int age){ this.name=name; this.age=age; } public void setAge(int age){ this.age=age; } public int getAge(){ return age; } public void setName(String name){ this.name=name; } public String getName(){ return name; }}
package test5;import java.util.ArrayList;import java.util.Scanner;public class arrayListDemo5 { public static void main(String[] args) { //创建集合对象 ArrayList array = new ArrayList<>(); //调用方法 addStudent(array); addStudent(array); addStudent(array); //使用for循环遍历集合 for(int i=0;iarray){ //创建Scanner对象,从键盘获取输入 Scanner sc = new Scanner(System.in); System.out.println("请输入学生姓名:"); String name = sc.nextLine(); System.out.println("请输入学生年龄:"); int age = sc.nextInt(); //创建学生对象 Student s = new Student(); s.setAge(age); s.setName(name); array.add(s); }}
2.学生管理系统 ①编写学生类
package studentManagerSystem;public class Student { //定义成员变量 private String name; private int age; private String sid; private int classroom; //定义无参构造方法alt+insert根据自己的需要选择 public Student() { } //定义带四个参数的构造方法 public Student(String name, int age, String sid, int classroom) { this.name = name; this.age = age; this.sid = sid; this.classroom = classroom; } //set()、get()方法 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 String getSid() { return sid; } public void setSid(String number) { this.sid = number; } public int getClassroom() { return classroom; } public void setClassroom(int classroom) { this.classroom = classroom; }}
②编写主界面
创建一个集合对象,用于接收学生对象用输出语句完成主页面的编写用Scanner完成键盘录入使用switch语句实现操作的选择使用while死循环完成再次回到主页面 ③编写添加学生方法
创建Scanner对象,从键盘获取学生信息录入使用学生对象的set方法,将参数传递到学生成员变量中使用集合的add方法,将学生对象添加到集合中输出提示符:添加学生成功调用isUsed方法,将返回值赋值给flag如果flag为true,输出提示符,否则break使用while死循环实现程序回到这里 ④编写判断添加学生学号是否重复方法
判断方法是否需要返回值和传递参数类型设置一个boolean类型的变量,赋值为false使用for循环遍历集合,如果集合中的学生对象的学号与输入学号一致则将变量flag修改为true返回flag ④编写删除学生方法
创建Scanner对象,从键盘获取要删除的学生学号使用for循环遍历集合,判断当输入学号与集合中的元素的学号相同时,使用集合对象的remove方法删除,当输入学号不存在时,输出:您输入的学号有误。 ⑤编写修改学生方法
创建Scanner对象,从键盘获取要修改的学生学号使用for循环遍历集合,当输入学号与集合中的元素的学号相同时,输出提示符,让用户输入新的姓名、年龄、班级,使用set方法将这些属性赋值给成员变量,使用集合对象的set方法,将修改后的学生对象添加到集合中。 ⑥编写查看全部学生方法
使用if语句做判断,当集合对象.size()==0时,输出:请先添加对象,并使用return语句结束方法。如果集合对象中的元素不为空时,使用输出语句输出一个打印格式。使用for循环遍历集合,使用集合对象.get获得集合元素。在通过Student.get()获得各个成员变量的值,并将它们打印出来。 package studentManagerSystem;import java.util.ArrayList;import java.util.Scanner;public class StudentManager { public static void main(String[] args) { //创建集合对象 ArrayList array = new ArrayList<>(); //循环实现回到主页面 while (true) { //2.编写主页面 System.out.println("---------欢迎来到学生管理系统----------"); System.out.println("1添加学生"); System.out.println("2删除学生"); System.out.println("3修改学生"); System.out.println("4查看全部学生"); System.out.println("5退出"); //从键盘获取输入 Scanner sc = new Scanner(System.in); System.out.println("请选择你要执行的操作(1-5):"); int i = sc.nextInt(); switch (i) { case 1: addStudent(array); break; case 2: removeStudent(array); break; case 3: setStudent(array); break; case 4: lookStudent(array); break; case 5: System.out.println("谢谢使用");// break; System.exit(0);//JVM退出 } } } //编写添加学生方法 public static void addStudent(ArrayList array){ //使用while死循环实现 //创建Scanner对象,从键盘录入学生信息 Scanner sc = new Scanner(System.in); String sid; while (true) { System.out.println("请输入学生学号:"); sid = sc.nextLine(); boolean flag = isUsed(array, sid); if (flag) { System.out.println("你输入的学号已经被使用,请重新输入"); }else{ break; } } System.out.println("请输入学生姓名:"); String name = sc.nextLine(); System.out.println("请输入学生年龄:"); int age = sc.nextInt(); System.out.println("请输入学生班级:"); int classroom = sc.nextInt(); //创建学生对象,接收学生信息 Student s1 = new Student(); s1.setName(name); s1.setClassroom(classroom); s1.setAge(age); s1.setSid(sid); //将学生添加到集合中 array.add(s1); //输出提示符 System.out.println("添加学生成功"); } //编写判断学生学号是否重复 public static boolean isUsed(ArrayList array,String sid){ boolean flag = false; //遍历集合 for (int i=0;i array){ //从键盘获取想要删除的学生的学号 System.out.println("请输入要删除的学生学号:"); Scanner sc = new Scanner(System.in); String sid = sc.nextLine(); //遍历集合,将该元素删除 for (int i=0;i array){ //从键盘获取要修改的学生的学号 Scanner sc = new Scanner(System.in); System.out.println("请输入要修改的学生的学号:"); String sid = sc.nextLine(); //遍历集合,找到与输入学生学号一致的元素 for (int i=0;i array){ //添加判断模块,如果集合中无元素,输出提示符 if(array.size()==0){ System.out.println("请先添加学生"); return; } System.out.println("学号tt姓名tt年龄tt班级"); //遍历集合 for (int i=0;i