先看空指针异常:
ListmovieInfos= null;
这样创建时,list指向为空,修改方法:
ListmovieInfos= new ArrayList();
再看list循环赋值的问题:
问题描述:
for (i=0;i<10;i++){
movieInfoSum.movieId = (int)recommendation.get(i).getItemID();
movieInfoSum.movieName = movieInfos.get(i).getMovieName();
movieInfoSum.movieType = movieInfos.get(i).getMovieType();
movieInfoSum.value = recommendation.get(i).getValue();
movieInfoSums.add(movieInfoSum);
}
这段代码在每一次循环时,都会将新的数值赋值到已保存的list中,比如,
第一个循环结束后:
数据正常加入,进行第二个循环过程中:
List movieInfoSums中已存入的下标0的值改变了,经过蒙逼半天后查找资料(https://blog.csdn.net/single_cong/article/details/80560616),发现是因为值类型和引用类型没区分好的问题
修改方法:
for (i=0;i<10;i++){
MovieInfoSum movieInfoSum = new MovieInfoSum();//将对象创建语句放在循环内
movieInfoSum.movieId = (int)recommendation.get(i).getItemID();
movieInfoSum.movieName = movieInfos.get(i).getMovieName();
movieInfoSum.movieType = movieInfos.get(i).getMovieType();
movieInfoSum.value = recommendation.get(i).getValue();
movieInfoSums.add(movieInfoSum);
}
总结:1,List创建时不置空,2,将对象传入List时要new新的对象。