【问题标题】:Map's value is an object. How can I use/iterate through all those variables? (Java)Map 的值是一个对象。我如何使用/遍历所有这些变量? (爪哇)
【发布时间】:2012-12-11 03:33:34
【问题描述】:

我有描述人的数据 - 他们都有 ID、头发颜色、眼睛颜色、年龄等。 People 类包含这些值。 我在其他班级做了这样的地图:

private static Map<Integer, People> people = new HashMap<Integer, People>();

我为它创建了一个 getPeople() 方法,所以我可以在其他地方使用它。

当我试图获取我的“人”地图的值时,我将它作为一个长字符串取回,例如 棕色蓝色6 没关系,因为我得到了正确的值,但我需要一个一个地使用它们。

假设我需要处理此人的 ID 或获取此人的头发颜色(如果此人是蓝眼睛)。

如何遍历这些值或仅获取“eyeColor”字符串的值? 我真的需要在这里使用 Map 还是有另一种更简单的方法? (描述人的东西必须放在单独的类中,我无法更改。)

【问题讨论】:

    标签: java class object map hashmap


    【解决方案1】:

    尚不清楚您是否需要地图 - 甚至您正在使用什么键。除非您需要按键查找,否则您可能只需要一个 List&lt;People&gt; - 如果它意味着每个实例代表一个 single 人,您可能应该将您的类型重命名为 Person,看起来更可能。此时,您可以使用:

    for (Person person : foo.getPeople() {
        String eyeColor = person.getEyeColor();
        // Do whatever you need
    }
    

    【讨论】:

      【解决方案2】:

      首先,people 表示persons。我怀疑你可能想要这样的东西:

      private static Map<Integer, Person> people = new HashMap<Integer, Person>();
      

      之后,您可以使用 enhanced-for-loop 来迭代地图。例如:

      for(Map.Entry<Integer, Person> person: people.entrySet())
      {
         String hair = person.getHairColor();
         //... You can retrieve other features as well.
      }
      

      【讨论】:

        【解决方案3】:

        由于你没有提供你的类代码,我将不得不猜测字段名称等,但这似乎应该完成你想要的:

        // Get the people (which are values, as opposed to keys) of the map.
        Collection<Person> people = getPeople().values();
        
        // Iterate over each person.
        for (Person somePerson : people) {
            // Do something with the eye color.
            System.out.println("This eye color is " + somePerson.eyeColor);
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2019-01-12
          • 2016-03-03
          • 2015-11-25
          • 2015-08-04
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-09-06
          相关资源
          最近更新 更多