【问题标题】:TreeMaps with java使用 java 的 TreeMaps
【发布时间】:2013-11-23 12:51:24
【问题描述】:

我有一个程序需要使用地图来存储有关电影的信息。基本上有四五个类别,喜剧动作等,然后是电影的名称。我尝试将类别分配给一个键并具有多个电影值,但这不起作用。我可以使用 arraylist 来存储包含两个字段的对象,并使用 for 循环遍历整个列表并使用对象获取方法来查看每个值。我怎样才能用地图做到这一点?我需要我的程序做的是向用户询问一个类别,然后让一个 for 循环遍历列表并打印出具有该类别的每部电影。每次我尝试使用地图时,它都不会打印出任何东西。

【问题讨论】:

  • 请贴出代码。
  • 为什么不使用以类别为键、以电影列表为值的地图。我想它应该可以解决问题
  • 您会选择使用 SQLite 吗? Java有一些实现。还是必须绝对使用 TreeMap?如果 SQLite 是一个选项,它可能会提供更好的可扩展性。

标签: java map hashmap treemap


【解决方案1】:

Map<Integer, ArrayList<String>> 怎么样,Integer 代表类别,ArrayList 中的 String 代表电影名称。当然,您可以使用除 Integer 或 Strings 之外的其他类。

【讨论】:

    【解决方案2】:

    两个想法:

    您可以将电影名称映射到类别:

    Map<String, Category> movies;
    

    或者您可以在一个类别下保留电影列表:

    Map<Category, List<String>> movies;
    

    总的来说,我建议使用其他索引,并将信息保存在 Movie 对象中。

    【讨论】:

      【解决方案3】:

      我会建议以下方法:

      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),您可以更灵活地选择以后想要的 wathever 实现......甚至对于不同的类别也有不同的选择,例如:Action LinkedList 和 Comedy ArrayList。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-07-12
        • 1970-01-01
        • 2016-09-22
        • 2012-11-12
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多