0

我有描述人的数据——他们都有一个 ID、头发颜色、眼睛颜色、年龄等。一个 People 类包含这些值。我在另一堂课上做了这样的地图:

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

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

当我试图获取我的“人”地图的值时,我将它作为一个长字符串取回,比如 brownblue6 没问题,因为我得到了正确的值,但我需要一个一个地使用它们。

因此,假设我需要对这个人的 ID 做一些事情,或者如果那个人有蓝眼睛,我需要得到这个人的头发颜色。

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

4

3 回答 3

2

目前尚不清楚您是否需要地图 - 甚至您正在使用什么键。除非您需要按键查找,否则您可能只需要一个List<People>- 并且您可能应该将您的类型重命名为Personif 它意味着每个实例代表一个,这看起来更有可能。那时,您可以使用:

for (Person person : foo.getPeople() {
    String eyeColor = person.getEyeColor();
    // Do whatever you need
}
于 2012-12-24T21:54:15.273 回答
1

首先,是指。我怀疑你可能想要这样的东西:

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.
}
于 2012-12-24T21:55:12.590 回答
0

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

// 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);
}
于 2012-12-24T21:57:57.237 回答