2015-06-02 91 views
0

假设我有两个List s,一个用于Movie s,另一个用于Genre s。我想将一个或多个Genre映射到一个Movie和/或一个或多个Movies到一个Genre。我会怎么做?收藏:映射对象

+2

地图<流派,列表>< - 这样 – nafas

+0

@nafas也许你应该写一个答案您的评论,有一个解释给未来的读者? – Luke

+2

@Luke答案应该是精确的,可以提供意见的地方, – nafas

回答

0

,你应该使用的收集Map<String, List<String>>

映射的一个或多个流派的电影,你应该使用: Map<movie, List<genre>>

而映射的一个或多个电影流派,你应该使用: Map<genre, List<movie>>

0

我想...类似的东西:

Movie f = new Movie("fight club"); // for example.. 
List<Genre> genres = ...; 
genres.add(new Genre("comic")); 
genres.add(new Genre("horror")); 

Map <Movie,List<Genre>> movieGenres = new HashMap<Movie,List<Genre>>(); 

movieGenres.add(f,genres); 
+0

...并且不要忘记在你的课程上重写hash和equals! –

0

使用适当的地图实现。

Map<String, MyObject> map = new HashMap<String, MyObject>(); 

,我建议你看看番石榴多重映射

Multimap<String, String> multimap = ArrayListMultimap.create(); 
multimap.put("action", "rambo"); 
multimap.put("action", "terminator"); 
multimap.put("thriller", "rambo"); 

System.out.println(multimap.get("action")); 
System.out.println(multimap.get("thriller")); 
+0

我很难找到从这个答案到问题的连接。考虑进一步解释你的意思 – LionC

+0

检查编辑的答复。 –