簡體   English   中英

更新包含彼此的 ArrayLists?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM