[英]Updating ArrayLists that contains each other?
抱歉,如果有類似的問題,我真的不知道如何調用這個概念來搜索問題。
所以我需要創建一個包含 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
}
我必須創建一個將電影和演員添加到數據庫的方法。 最終目標是新電影必須屬於電影 class,並且包含其中的所有演員,對於新演員也是如此。
我無法弄清楚的是,由於電影 class 包含一個演員對象數組,而演員 class 包含一個電影列表數組,你如何更新以便最后添加的新電影包含一個完整的演員列表在其中,列表中的每個演員的電影列表都更新為新電影 object?
在這種情況下,遞歸是正確的概念嗎?
假設添加了一部新電影
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);
}
根據您的需要,您可能需要注意更新之間的同步。
我認為遞歸在這里不合適,盡管您可以使用它。 數據庫具有循環依賴關系,因此您只需要在更新后進行同步。 換句話說,請確保在添加新條目后,兩個數據庫都使用缺失的信息進行更新。 通過將ArrayList
HashMap
使同步更容易,您可能需要重構您的類來執行此操作。 為簡單起見,我省略了列表,您可以將它們作為參數添加:
void update(String movieName, String actorName) {
if (movies.get(movieName) == null) {
movies.put(movieName);
}
if (actors.get(actorName) == null) {
actors.put(actorName);
}
}
用於:
HashMap<String> actors = new HashMap<>();
HashMap<String> movies = new HashMap<>();
actors.put("foo");
movies.put("bar");
// Update happened, synchronize with what you just added
update("foo", "bar");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.