案例:遍历并删除元素值
解决方案一:
public class ArrayListTest4 { public static void main(String[] args) { //1.创建一个ArrayList集合存储一个班级学生的成绩 ArrayList<Integer> scores = new ArrayList<>(); scores.add(98); scores.add(77); scores.add(66); scores.add(89); scores.add(79); scores.add(50); scores.add(100); System.out.println(scores); //完美方案一: for (int i = 0; i < scores.size(); i++) { int score = scores.get(i); if (score < 80){ //低于80,分数删除 scores.remove(i); i--;//删除成功后,必须退一步,这样可以保证下次回到这个位置,如此则不会跳数据 } } System.out.println(scores); } }
解决方案二:
public class ArrayListTest4 { public static void main(String[] args) { //1.创建一个ArrayList集合存储一个班级学生的成绩 ArrayList<Integer> scores = new ArrayList<>(); scores.add(98); scores.add(77); scores.add(66); scores.add(89); scores.add(79); scores.add(50); scores.add(100); System.out.println(scores); //完美方案二:从后面倒着遍历再删除就可以 for (int i = scores.size() - 1; i >= 0 ; i--) { int score = scores.get(i); if (score < 80){ scores.remove(i); } } System.out.println(scores); } }
案例:影片信息在程序中的表示
代码演示如下:
先定义一个电影类:
public class Movie { private String name; private double score; private String actor; public Movie(){ } public Movie(String name, double score, String actor) { this.name = name; this.score = score; this.actor = actor; } public String getName() { return name; } public void setName(String name) { this.name = name; } public double getScore() { return score; } public void setScore(double score) { this.score = score; } public String getActor() { return actor; } public void setActor(String actor) { this.actor = actor; } }
再定义一个测试类:
public class ArrayListTest5 { public static void main(String[] args) { //1.定义一个电影类 //2.创建三个电影对象 Movie m1 = new Movie("《肖申克的救赎》",9.7,"罗宾斯"); Movie m2 = new Movie("《霸王别姬》",9.6,"张国荣、张丰毅"); Movie m3 = new Movie("《阿甘正传》",9.5,"汤姆.汉克斯"); //3.创建一个电影类的ArrarList集合,存储三部电影 ArrayList<Movie> movies = new ArrayList<>(); movies.add(m1); movies.add(m2); movies.add(m3); System.out.println(movies); //4.遍历电影类型集合中的每个电影对象。访问它的信息即可 for (int i = 0; i < movies.size(); i++) { //i = 0, 1, 2 Movie m = movies.get(i); System.out.println("电影名称:" + m.getName()); System.out.println("电影评分:" + m.getScore()); System.out.println("主演:" + m.getActor()); System.out.println("------------------------"); } } }
案例:学生信息系统的数据搜索
实现代码如下:
先定义一个学生类:
public class Student { private String studyNumber; private String name; private int age; private String classname; public Student() { } public Student(String studyNumber, String name, int age, String classname) { this.studyNumber = studyNumber; this.name = name; this.age = age; this.classname = classname; } public String getStudyNumber() { return studyNumber; } public void setStudyNumber(String studyNumber) { this.studyNumber = studyNumber; } 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 getClassname() { return classname; } public void setClassname(String classname) { this.classname = classname; } }
再定义一个测试类:
public class ArrayListTest6 { public static void main(String[] args) { //1.定义学生类 //2.创建集合存储学生对象,创建学生对象封装学生信息。 //把学生对象添加到集合中去 ArrayList<Student> students = new ArrayList<>(); students.add(new Student("20180302","叶孤城",23,"护理一班")); students.add(new Student("20180303","东方不败",24,"推拿二班")); students.add(new Student("20180304","西门吹雪",25,"中药学三班")); students.add(new Student("20180305","梅超风",26,"神经科四班")); //3.遍历这些学生的信息展示 for (int i = 0; i < students.size(); i++) { Student s = students.get(i); System.out.println(s.getStudyNumber()+"\t"+s.getName()+"\t"+s.getAge()+"\t"+s.getClassname()); } //4.定义方法完成按照学号搜索的功能 Scanner sc = new Scanner(System.in); while (true){ System.out.println("请输入学号查询学生对象:"); String studyNumber = sc.next(); //5.调用方法查询 Student s = getStudentById(students,studyNumber); //6.判断s中是否存在学生对象地址 if (s == null){ System.out.println("对不起,查无此人~"); }else{ System.out.println("您查询的学生对象如下:"); System.out.println(s.getStudyNumber()+"\t"+s.getName()+"\t"+s.getAge()+"\t"+s.getClassname()); } } } /** * 根据学生的学号查询学生对象并返回 * @param students 存储全部学生对象的集合 * @param studyNumber 搜索的学生的学号 * @return 学生对象 | null */ public static Student getStudentById(ArrayList<Student> students,String studyNumber){ //1.遍历全部学生对象 for (int i = 0; i < students.size(); i++) { Student s = students.get(i); //2.询问遍历的这个学生对象的学号,是否是我们要找的学号 if (s.getStudyNumber().equals(studyNumber)){ return s; } } //查无此人 return null; } }