目录
一定义,添加,输出
package ArrayList; import java.util.ArrayList; public class ArrayListDemo1 { public static void main(String[] args) { ArrayList list=new ArrayList(); list.add("java"); list.add("Mysql"); list.add("黑马"); list.add(23); list.add(23.5); list.add(false); list.add('中'); System.out.println(list); } }
二 给指定索引位置插入元素
package ArrayList; import java.util.ArrayList; public class ArrayListDemo1 { public static void main(String[] args) { ArrayList list=new ArrayList(); list.add("java"); list.add("Mysql"); list.add("黑马"); list.add(23); list.add(23.5); list.add(false); list.add('中'); System.out.println(list); list.add(1,"小花"); System.out.println(list); } }
三泛型
- ArrayList<E>:泛型类,约束集合只能操作某种数据类型
package ArrayList; import java.util.ArrayList; public class ArrayListDemo2 { public static void main(String[] args) { ArrayList<String> list=new ArrayList<>(); list.add("java"); ArrayList<Integer> list2=new ArrayList<>(); list2.add(23); list2.add(25); } }
四常用API和遍历
方法 说明
public E get(int index) 返回指定索引处的元素 public int size() 返回集合中的元素个数 public E remove(int index) 删除指定索引处的元素,返回被删除的元素 public boolean remove(Object o) 删除指定的元素,返回删除是否成功 public E set(int index,E element) 修改指定索引处的元素,返回被修改的元素 package ArrayList; import java.util.ArrayList; public class ArrayListDemo3 { public static void main(String[] args) { ArrayList<String> list=new ArrayList<>(); list.add("java"); list.add("java"); list.add("Mysql"); list.add("MyBatis"); list.add("HTML"); //public E get(int index) String e=list.get(3); System.out.println(e); //public int size() System.out.println(list.size()); //完成集合遍历 for (int i = 0; i < list.size(); i++) { System.out.println(list.get(i)); } System.out.println("--------"); //public E remove(int index) System.out.println(list); String e2=list.remove(2); System.out.println(e2); System.out.println(list); System.out.println("---------"); //public boolean remove(Object o) System.out.println(list.remove(2)); System.out.println(list); System.out.println("---------"); //public E set(int index,E element) String e3=list.set(2,"vue"); System.out.println(e3); System.out.println(list); } }
案例一 遍历并删除元素
遍历并删除元素值
需求:
某个班级的考试在系统上进行,成绩大致为: 98,77,66,89,79,50,109现在需要先把成绩低于80分以下的数据去掉
分析:
定义ArrayList集合存储多名学员的成绩
遍历集合每个元素,如果元素值低于80分,去掉它。错误代码
package ArrayList; import java.util.ArrayList; public class ArrayListDemo4 { public static void main(String[] args) { ArrayList<Integer> scores = new ArrayList<>(); scores.add(80); scores.add(45); scores.add(97); scores.add(55); scores.add(65); scores.add(87); scores.add(80); scores.add(75); scores.add(90); System.out.println(scores); for (int i = 0; i < scores.size(); i++) { int score=scores.get(i); if (score<80){ scores.remove(i); } } System.out.println(scores); } }
错误原因:将小于80的删除,后面会自动往前移,然而遍历却自增。
修改方法一:每次成功删除后 往后退一个人位置 让当前位置重新判断
package ArrayList; import java.util.ArrayList; public class ArrayListDemo4 { public static void main(String[] args) { ArrayList<Integer> scores = new ArrayList<>(); scores.add(80); scores.add(45); scores.add(97); scores.add(55); scores.add(65); scores.add(87); scores.add(80); scores.add(75); scores.add(90); System.out.println(scores); for (int i = 0; i < scores.size(); i++) { int score=scores.get(i); if (score<80){ scores.remove(i); i--;//每次成功删除后 往后退一个位置 } } System.out.println(scores); } }
修改方法二:倒着循环遍历
package ArrayList; import java.util.ArrayList; public class ArrayListDemo4 { public static void main(String[] args) { ArrayList<Integer> scores = new ArrayList<>(); scores.add(80); scores.add(45); scores.add(97); scores.add(55); scores.add(65); scores.add(87); scores.add(80); scores.add(75); scores.add(90); 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); } }
ArrayList集合存储自定义类型
案例:集合存储自定义元素并遍历。
需求:定义电影类《名称,分值,演员),创达了个电影对象,代表三部影片,存入集合中并遍历
《肖生克的救赎》,9.7 , 罗宾斯
《霸王别姬》, 9.6, 张国荣、张丰毅
《阿甘正传》,9.5, 汤姆.汉克斯package ArrayList; import java.util.ArrayList; public class MovieTest { public static void main(String[] args) { Movie m1=new Movie("《肖生克的救赎》",9.7,"罗宾斯" ); Movie m2=new Movie("《霸王别姬》", 9.6,"张国荣、张丰毅"); Movie m3=new Movie("《阿甘正传》",9.5,"汤姆.汉克斯"); ArrayList<Movie> movies=new ArrayList<Movie>(); movies.add(m1); movies.add(m2); movies.add(m3); for (int i = 0; i < movies.size(); i++) { Movie m=movies.get(i); System.out.println("电影名称"+m.getName()); System.out.println("电影名称"+m.getScore()); System.out.println("电影名称"+m.getActor()); System.out.println("-------" ); } } }
Arraylist搜索
案例: 学生信息系统:展示数据,并按照学号完成搜索学生类信息《学号,姓名,性别,班级)测试数据:
"20180302”,"叶孤城",23,"护理一班""20180303","东方不败”,23,"推拿二班"
"20180304","西门吹雪",26,"中药学四班"
"20180305","梅超风",26,"神经科2班"
package ArrayList; 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; } /** * 获取 * @return number */ public String getstudyNumber() { return studyNumber; } /** * 设置 * @param studyNumber */ public void setstudyNumber(String studyNumber) { this.studyNumber = studyNumber; } /** * 获取 * @return name */ public String getName() { return name; } /** * 设置 * @param name */ public void setName(String name) { this.name = name; } /** * 获取 * @return age */ public int getAge() { return age; } /** * 设置 * @param age */ public void setAge(int age) { this.age = age; } /** * 获取 * @return className */ public String getClassName() { return className; } /** * 设置 * @param className */ public void setClassName(String className) { this.className = className; } }
package ArrayList; import java.util.ArrayList; import java.util.Scanner; public class StudentTest { public static void main(String[] args) { ArrayList<Student> students=new ArrayList<Student>(); 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班级\t"); 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()); } Scanner sc=new Scanner(System.in); while (true){ System.out.println("请输入学号" ); String studentNumber=sc.next(); Student s=getStudentById(students,studentNumber); if (s==null){ System.out.println("查无此人" ); }else{ System.out.println("查询结果如下" ); System.out.println(s.getstudyNumber()+"\t"+s.getName()+"\t"+s.getAge()+"\t"+s.getClassName()); } } } public static Student getStudentById(ArrayList<Student> students,String studyNumber){ for (int i = 0; i < students.size(); i++) { Student s=students.get(i); if (s.getstudyNumber().equals(studyNumber)){ return s; } } return null; } }