注意:集合中存储的元素并不是对象本身,而是对象的地址
(Movie类)
package arraylist;
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方法)
package arraylist;
import java.util.ArrayList;
import java.util.Scanner;
public class ArrayListTest {
public static void main(String[] args) {
Movie movie1 = new Movie("《肖申克的救赎》",9.7,“罗宾斯”);
Movie movie2 = new Movie("《敢死队》",9.9,“史泰龙,杰森·斯坦森”);
Movie movie3 = new Movie("《终结者》",9.8,“施瓦辛格”);
ArrayList list = new ArrayList<>();
list.add(movie1);
list.add(movie2);
list.add(movie3);
System.out.println(list);//只会输出地址
for (int i = 0; i < list.size(); i++) {
Movie m = list.get(i);
System.out.println(“电影名称:”+m.getName()+"\t"+“电影得分:”+m.getScore()+"\t"+“电影演员:”+m.getActor());
System.out.println("----------");
}
//定义方法,可以反复查询电影
Scanner sc = new Scanner(System.in);
while (true){
System.out.println("请输入要查询的电影名称:");
String name = sc.nextLine();
//调用方法查询
Movie m = getMovieByName(list,name);
//判断是否存在学生对象地址
if(m == null){
System.out.println("没有查询到信息");
}else{
System.out.println("电影名称"+m.getName()+"\t"+"电影得分"+m.getScore()+"\t"+"电影演员"+m.getActor());
}
}
}
/**
* 根据名称查询电影,并返回对象
* @param list
* @param name
* @return
*/
public static Movie getMovieByName(ArrayList<Movie> list,String name){
//遍历电影对象
for (int i = 0; i < list.size(); i++) {
Movie m = list.get(i);
//查询当前遍历的名称是不是要找的名称
if(m.getName().equals(name)){
//若正确,则返回名称
return m;
}
}
//若错误,返回null
return null;
}
}