Java ArrayList集合
目标: 创建ArrayList对象,代表集合容器,往里面添加元素。
import java.util.ArrayList; public class ArrayListDemo1 { public static void main(String[] args) { // 1、创建ArrayList集合的对象 ArrayList list = new ArrayList(); // 2、添加数据 list.add("Java"); list.add("Java"); list.add("MySQL"); list.add(23); list.add(23.5); list.add(false); System.out.println(list.add('中')); System.out.println(list); // 3、给指定索引位置插入元素 list.add(1, "赵敏"); System.out.println(list); } }
能够使用泛型约束ArrayList集合操作的数据类型
public class ArrayListDemo2 { public static void main(String[] args) { // ArrayList list = new ArrayList(); ArrayList list = new ArrayList<>(); // JDK 1.7开始,泛型后面的类型申明可以不写 list.add("Java"); list.add("MySQL"); // list.add(23); // list.add(23.5); ArrayList list2 = new ArrayList<>(); list2.add(23); list2.add(100); // list2.add("Java"); }
掌握ArrayList集合的常用API
public class ArrayListDemo3 { public static void main(String[] args) { ArrayList list = new ArrayList<>(); list.add("Java"); list.add("Java"); list.add("MySQL"); list.add("MyBatis"); list.add("HTML"); // 1、public E get(int index):获取某个索引位置处的元素值 String e = list.get(3); System.out.println(e); // 2、public int size():获取集合的大小(元素个数) System.out.println(list.size()); // 3、完成集合的遍历 for (int i = 0; i < list.size(); i++) { System.out.println(list.get(i)); } // 4、public E remove(int index):删除某个索引位置处的元素值,并返回被删除的元素值 System.out.println(list); // [Java, Java, MySQL, MyBatis, HTML] String e2 = list.remove(2); System.out.println(e2); System.out.println(list); // 5、public boolean remove(Object o):直接删除元素值,删除成功返回true,删除失败返回false System.out.println(list.remove("MyBatis")); System.out.println(list); ArrayList list1 = new ArrayList<>(); list1.add("Java"); list1.add("王宝强"); list1.add("Java"); list1.add("MySQL"); System.out.println(list1); // 只会删除第一次出现的这个元素值,后面的不删除 System.out.println(list1.remove("Java")); System.out.println(list1); // 6、public E set(int index,E element):修改某个索引位置处的元素值。 String e3 = list1.set(0 , "贾乃亮"); System.out.println(e3); System.out.println(list1); } }
案例:从集合中遍历元素且删除。
public class ArrayListTest4 { public static void main(String[] args) { // 1、创建集合对象:存入学生成绩(98,77,66,89,79,50,100) ArrayList 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); // [98, 77, 66, 89, 79, 50, 100] // [98, 66, 89, 50, 100] // i // 方法1 for (int i = 0; i < scores.size(); i++) { int score = scores.get(i); // 2、判断这个分数是否低于80分,如果低于则从集合中删除它 if(score < 80){ scores.remove(i); i--; //退一步 } } System.out.println(scores); // [98, 77, 66, 89, 79, 50, 100] // [98, 89, 100] // i // 方法2 从末尾往前删除 for (int i = scores.size() - 1; i >= 0 ; i--) { int score = scores.get(i); // 2、判断这个分数是否低于80分,如果低于则从集合中删除它 if(score < 80){ scores.remove(i); } } System.out.println(scores); } }
案例:集合存储自定义元素并遍历。
需求:定义电影类(名称,分值,演员),创建3个电影对象,代表三部影片,存入集合中并遍历。
《肖生克的救赎》, 9.7 , 罗宾斯
《霸王别姬》, 9.6 , 张国荣、张丰毅
《阿甘正传》, 9.5 , 汤姆.汉克斯
public class ArrayListTest5{ public static void main(String[] args) { // 1、定义一个电影类:Movie // 2、定义一个ArrayList集合存储这些影片对象。 ArrayList movies = new ArrayList<>(); // 3、创建影片对象封装电影数据,把对象加入到集合中去。 // Movie m1 = new Movie("《肖生克的救赎》", 9.7 , "罗宾斯"); // movies.add(m1); movies.add(new Movie("《肖生克的救赎》", 9.7 , "罗宾斯")); movies.add(new Movie("《霸王别姬》", 9.6 , "张国荣、张丰毅")); movies.add(new Movie("《阿甘正传》", 9.5 , "汤姆.汉克斯")); System.out.println(movies); // 4、遍历集合中的影片对象并展示出来 for (int i = 0; i < movies.size(); i++) { Movie movie = movies.get(i); System.out.println("片名:" + movie.getName()); System.out.println("评分:" + movie.getScore()); System.out.println("主演:" + movie.getActor()); } } }
movie.java
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; } }
案例:学生信息系统:展示数据,并按照学号完成搜索
学生类信息(学号,姓名,性别,班级)
测试数据:
“20180302”,”叶孤城”,23,”护理一班”
“20180303”,”东方不败”,23,”推拿二班”
“20180304”,”西门吹雪”,26,”中药学四班”
“20180305”,”梅超风”,26,”神经科2班”
public class ArrayListTest6 { public static void main(String[] args) { // 1、定义一个学生类,后期用于创建对象封装学生数据 // 2、定义一个集合对象用于装学生对象 ArrayList students = new ArrayList<>(); students.add(new Student("20180302","叶孤城",23,"护理一班")); students.add(new Student("20180303","东方不败",23,"推拿二班")); students.add(new Student( "20180304","西门吹雪",26,"中药学四班")); students.add(new Student( "20180305","梅超风",26,"神经科2班")); System.out.println("学号\t\t名称\t年龄\t\t班级"); // 3、遍历集合中的每个学生对象并展示其数据 for (int i = 0; i < students.size(); i++) { Student s = students.get(i); System.out.println(s.getStudyId() +"\t\t" + s.getName()+"\t\t" + s.getAge() +"\t\t" + s.getClassName()); } // 4、让用户不断的输入学号,可以搜索出该学生对象信息并展示出来(独立成方法) Scanner sc = new Scanner(System.in); while (true) { System.out.println("请您输入要查询的学生的学号:"); String id = sc.next(); Student s = getStudentByStudyId(students, id); // 判断学号是否存在 if(s == null){ System.out.println("查无此人!"); }else { // 找到了该学生对象了,信息如下 System.out.println(s.getStudyId() +"\t\t" + s.getName()+"\t\t" + s.getAge() +"\t\t" + s.getClassName()); } } } /** 根据学号,去集合中找出学生对象并返回。 * @param students * @param studyId * @return */ public static Student getStudentByStudyId(ArrayList students, String studyId){ for (int i = 0; i < students.size(); i++) { Student s = students.get(i); if(s.getStudyId().equals(studyId)){ return s; } } return null; // 查无此学号! } }
student.java
package com.itheima.arraylist; public class Student { private String studyId; private String name; private int age; private String className; public Student() { } public Student(String studyId, String name, int age, String className) { this.studyId = studyId; this.name = name; this.age = age; this.className = className; } public String getStudyId() { return studyId; } public void setStudyId(String studyId) { this.studyId = studyId; } 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; } }