ArrayList 集合类常用API
ArrayList<String> 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);
System.out.println(list.remove("java"));//如果集合里面有重复的元素 默认删除前面的java
System.out.println(list);
//6.public E set(int index,E element)修改某个索引位置处的元素值。
String e3 = list.set(0,"java1");
System.out.println(e3);//输出你要改之前的值
System.out.println(list);
java 遍历并删除元素值
- 需求:
1.某个班级的考试在系统上进行,成绩大致为:98,77,66,89,79,50,100
2.现在需要把成绩低于80分以下的数据去掉。 - 分析:
1.定义ArrayList 集合存储多名学员的成绩。
2.遍历集合每个元素,如果元素值低于80分,去掉它。
//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);
方案一:从前往后
for (int i = 0; i < scores.size(); i++) {
int score = scores.get(i);
if (score<80){
scores.remove(i);
i--;//删除成功后,必须退一步,这样可以保证下次回到这个位置,如此则不会跳过数据
}
}
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);
影片信息在程序中的表示
- 需求:某影院系统需要在后台存储上述三部电影,然后依次展示出来。
- 1.定义一个电影类,定义一个集合存储电影对象。
- 2.创建3个电影对象,封装相关数据,把三个对象存入到集合中去。
- 3.遍历集合中的3个对象,输出相关信息。
Movie类
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;
}
}
main方法
//1.定义电影类
//2.创建三个电影对象
Movie m1 =new Movie("《肖申克的救赎》",9.7,"罗宾斯");
Movie m2 =new Movie("《霸王别姬》",9.7,"张国荣、张丰毅");
Movie m3 =new Movie("《阿甘正传》",9.5,"汤姆·汉克斯");
//3.创建一个电影类型的ArrayList集合,存储三部电影对象
ArrayList<Movie> movies = new ArrayList<>();
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("----------------");
}
学生信息系统的数据搜索
- 需求:后台程序需要存储如上学生信息并展示,然后要提供按照学号搜索学生信息的功能。
- 分析:
1.定义Student类,定义ArrayList集合存储如上学生对象信息,并遍历展示出来。
2.提供一个方法,可以接收ArrayList集合,和要搜索的学号,返回搜索到的学生对象信息,并展示。
3.使用死循环,让用户可以不停的搜索。
先定义学生类
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;
}
}
main方法
public static void main(String[] args) {
//1.定义学生类
//2.创建集合存储学生对象,创建学生对象封装学生对象
//把学生对象添加到集合中去
ArrayList<Student> 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班"));
//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)){
//这个s代表的学生对象,就是我们要找的,返回
return s;
}
}
//查无此人
return null;
}