2015-06-02 2 views
0

Предположим, у меня есть два List s, один для Movie s и еще один для Genre s. Я хочу сопоставить один или несколько Genre s с одним Movie и/или одним или несколькими Movie s до одного Genre. Как мне это сделать?Коллекция: Картирование объектов

+2

Map <жанр Список ><- как этот – nafas

+0

@nafas Может быть, вы должны написали свой комментарий в качестве ответа, с объяснением будущим читателям? – Luke

+2

@ Ответы Luke должны быть точными, если комментарии могут быть ключевыми, – nafas

ответ

0

Java Map-interface предназначенный для отображения объектов на другие объекты. A Map<Movie, List<Genre>> присваивает List от Genre s до одного Movie, a Map<Genre, List<Movie>> будет делать это наоборот.

Если вы хотите 2-полосная-карту, there is already a question for that

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

... и не забудьте переопределить хэш и равные на ваших классах! –

0

Использование соответствующей реализации карты.

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

Я предлагаю вам взглянуть на Гуава Multimap

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

Проверьте отредактированный ответ. –

Смежные вопросы