java - 更新包含彼此的 ArrayLists?
问题描述
抱歉,如果有类似的问题,我真的不知道如何调用这个概念来搜索问题。
所以我需要创建一个包含 3 个类的数据库,如下所示:
public class Actor {
private String name;
private ArrayList<Movie> movies; //all movies the actor has been in
}
public class Movie {
private String name;
private ArrayList<Actor> actors;
}
public class MovieDatabase {
private ArrayList<Movie> movieList;
private ArrayList<Actor> actorList; //all actors in the movie
}
我必须创建一个将电影和演员添加到数据库的方法。最终目标是新电影需要属于 Movie 类,并且包含其中的所有演员,对于新演员也是如此。
我无法弄清楚的是,由于 Movie 类包含一个 Actor 对象数组,而 Actor 类包含一个 Movie 列表数组,那么您如何更新以便最终添加的新 Movie 包含一个完整的 Actor 列表在其中,列表中的每个 Actor 都使用新的 Movie 对象更新其电影列表?
在这种情况下,递归是正确的概念吗?
解决方案
假设添加了一部新电影
Movie movie = new Movies();
movie.setActors(listOfActors)
现在对于每个演员,您需要更新电影列表
listOfActors.forEach(actor -> addMovieToActor(movie,actor));
public addMovieToActor(Movie movie,Actor actor){
List<Movies> existingMovies =actor.getMovies();
existingMovies.add(movie);
}
根据您的需要,您可能需要注意更新之间的同步。
推荐阅读
- node.js - Mongoose 中间件禁用(/unhook/delete/remove)创建的钩子
- python - 如何从 Django 中的注册表单(针对用户)将 GROUP 分配给用户?
- objective-c - AudioKit 滚动波形图未显示在物理设备上
- tree - 用于折叠树分支的 SPARQL 查询(总结拓扑)
- sql - 使用#temp 表中的字段的存储过程问题
- sql - 在 WHERE/Joining 3 个表中进行子查询,2 个用于记录,1 个用于数字,不返回结果/失败 - MSAccess
- java - 使用 Adobe Air 证书签署 Android Native apk
- angular - Bootstrap Dropdown Angular 4无法正常工作
- c# - C#:从变量中获取变量值
- javascript - 如何让 xpages 模态触发关闭事件