我有一个程序,它需要使用地图来存储有关电影的信息。基本上有四到五个类别,喜剧,动作等,然后是电影的名字。我尝试将类别分配给一个键,并有多个值,这些值就是电影,但这不起作用。我可以使用arraylist来存储包含这两个字段的对象,并使用for循环遍历整个列表并使用对象的get方法来查看每个值。我怎么才能用地图做到这一点呢?我需要我的程序做的是要求用户输入一个类别,然后让一个for循环遍历列表并打印出包含该类别的每一部电影。每次我尝试使用地图时,它都不会打印出任何内容。
发布于 2013-11-23 20:56:31
在Map<Integer, ArrayList<String>>中,Integer将表示类别,ArrayList中的String将是电影名称。当然,您可以使用Integer或String以外的其他类。
发布于 2013-11-23 21:00:01
有两个想法:
您可以将电影名称映射到类别:
Map<String, Category> movies;或者,您可以在某个类别下保留一个电影列表:
Map<Category, List<String>> movies;总而言之,我建议通过其他方式进行索引,并将信息保留在Movie对象中。
发布于 2013-11-23 21:01:59
我建议采取以下方法:
enum Category {COMEDY, ACTION }
// class containing movie related information
public class Movie {
private String name;
// other useful fields
// getter and setters
}
// ... your code containing the "movies logic"
Map<Category, List<Movie>> movies ...如下所示,您可以查看要使用的类别,并提取给定类别的列表。即使set是保存电影的更好的容器,而不是list...like,您也要避免重复。无论如何,通过使用接口(Set或List)将为您提供更多的灵活性来选择以后的like...or实现,您甚至可以为不同的类别选择不同的接口,例如:对于动作LinkedList,而对于喜剧ArrayList。
https://stackoverflow.com/questions/20162517
复制相似问题