学习视频:
目录
案例1:遍历并删除元素值
需求:
- 有一组成绩,将成绩低于80的分数去掉
分析:
- 将成绩存在集合里:创建一个int集合
- 遍历集合删掉小于80的分数
import java.util.ArrayList;
public class ArrayList2 {
public static void main(String[] args) {
ArrayList<Integer> score=new ArrayList<>();
score.add(98);
score.add(77);
score.add(66);
score.add(89);
score.add(79);
score.add(50);
score.add(100);
System.out.println("score:"+score);
/*
for (int i = 0; i < score.size(); i++) {
int s=score.get(i);
if(s< 80){
score.remove(i);
}
}
System.out.println("score:"+score);
从前面开始删除,在删除过程中,集合的长度在变化,同时每个索引上的数字也在变化,所以并不能确保每个数字都被遍历到
*/
//因此可以选择从集合的最后一个数开始遍历
for (int i = score.size()-1; i > 0; i--) {
if(score.get(i)<80){
score.remove(i);
}
}
System.out.println("score:"+score);
}
}
案例2:影片信息在程序中的表示
需求:
- 在影院后台存储三部电影,然后依次展示出来
分析:
- 定义一个电影类存放,定义一个集合存储电影对象
- 三部电影是三个对象,封装(右键 getandset),把对象存入集合
public class ArrayList3 {
public static void main(String[] args) {
ArrayList<Movie> movies = new ArrayList<>();
/*Movie m1 = new Movie("DETACEMENT",93,"Tony","2011-4-25");
Movie m2 = new Movie("小偷家族",116,"是枝裕和","2018-6-8");
Movie m3 = new Movie("盗梦空间",148,"莱昂纳多","2010-9-1");
movies.add(m1);
movies.add(m2);
movies.add(m3);*/
movies.add(new Movie("DETACEMENT",93,"Tony","2011-4-25"));//对象存着数据但是对象是地址
movies.add(new Movie("小偷家族",116,"是枝裕和","2018-6-8"));
movies.add(new Movie("盗梦空间",148,"莱昂纳多","2010-9-1"));
System.out.println(movies);//此时集合里存的是对象的地址
for (int i = 0; i < movies.size(); i++) {
Movie movie=movies.get(i);//遍历对象
//取出对象中的值
System.out.println(movie.getName()+"\t"+movie.getMn()+"\t"+movie.getActor()+"\t"+movie.getDate());
}
}
}
//电影类
class Movie {
private String name;
private double mn;
private String actor;
private String date;
public Movie(String name, double mn, String actor, String date) {
this.name=name;
this.mn=mn;
this.actor=actor;
this.date=date;
}
public Movie(){}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getMn() {
return mn;
}
public void setScore(double mn) {
this.mn = mn;
}
public String getActor() {
return actor;
}
public void setActor(String actor) {
this.actor = actor;
}
public String getDate() {
return date;
}
public void setDate(String date) {
this.date = date;
}
}
案例三:学生信息系统的数据搜索
需求:
- 存储学生信息并展示,可以按学号搜索学生信息
分析:
1.定义一个学生类,存放序号,姓名,年龄,班级
2.提供搜索方法,可以接受学生信息,搜索学号,展示信息
3.使用死循环,让用户不停的搜索
import java.util.ArrayList;
import java.util.Scanner;
public class ArrayList4 {
public static void main(String[] args) {
//录入学生信息
ArrayList<Students> s=new ArrayList<>();
s.add(new Students("20181","叶孤城",23,"1班"));
s.add(new Students("20182","东方不败",22,"1班"));
s.add(new Students("20183","西门吹雪",22,"1班"));
s.add(new Students("20184","梅超风",24,"1班"));
//查看学生信息
for (int i = 0; i < s.size(); i++) {
Students t=s.get(i);
System.out.println(t.getNo()+"\t"+t.getName()+"\t"+t.getAge()+"\t"+t.getFrom());
}
//控制台
while(true){
System.out.println("请输入学号:");
Scanner sc=new Scanner(System.in);
String id=sc.next();
getStudentbyId(s, id);
}
}
//搜索方法
public static Students getStudentbyId(ArrayList<Students> s,String id){
for (int i = 0; i < s.size(); i++) {
Students t=s.get(i);
if (t.getNo().equals(id)){
System.out.println(t.getNo()+"\t"+t.getName()+"\t"+t.getAge()+"\t"+t.getFrom());
break;
}else{
System.out.println("查无此人");
break;
}
}
return null;
}
}
//学生类
class Students{
private String no;
private String name;
private int age;
private String from;
public Students(){}
public Students(String no,String name,int age,String from){
this.no=no;
this.name=name;
this.age=age;
this.from=from;
}
public String getNo() {
return no;
}
public void setNo(String no) {
this.no = no;
}
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 getFrom() {
return from;
}
public void setFrom(String from) {
this.from =from;
}
}