关于Java:HASMAP的访问值

Access values of hashmap

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
How do I iterate over each Entry in a Map?

我有一张地图,Map map = new HashMap ();

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
public class Records
{
    String countryName;
    long numberOfDays;

    public String getCountryName() {
        return countryName;
    }
    public void setCountryName(String countryName) {
        this.countryName = countryName;
    }
    public long getNumberOfDays() {
        return numberOfDays;
    }
    public void setNumberOfDays(long numberOfDays) {
        this.numberOfDays = numberOfDays;
    }

    public Records(long days,String cName)
    {
        numberOfDays=days;
        countryName=cName;
    }

    public Records()
    {
        this.countryName=countryName;
        this.numberOfDays=numberOfDays;
    }

我已经实现了map的方法,现在请告诉我如何访问hashmap中的所有值。我需要在Android的用户界面上展示它们?


可以使用for循环

1
2
3
4
5
6
7
8
9
10
Set keys = map.keySet();   // It will return you all the keys in Map in the form of the Set


for (Iterator i = keys.iterator(); i.hasNext();)
{

      String key = (String) i.next();

      Records value = (Records) map.get(key); // Here is an Individual Record in your HashMap
}

如果要从您的HashMap并行访问keysvalues,可以使用Map#entrySet方法:

1
2
3
4
5
6
7
Map<String, Records> map = new HashMap<String, Records> ();

//Populate HashMap

for(Map.Entry<String, Record> entry: map.entrySet()) {
    System.out.println(entry.getKey() +" :" + entry.getValue());
}

另外,您可以在Record类中重写toString方法,以便在for-each循环中打印时获得instances的字符串表示。

更新:

如果您想按照key的字母顺序对Map进行排序,可以将Map转换为TreeMap。它将自动放置按键排序的条目:

1
2
3
4
5
6
    Map<String, Integer> treeMap = new TreeMap<String, Integer>(map);

    for(Map.Entry<String, Integer> entry: treeMap.entrySet()) {
        System.out.println(entry.getKey() +" :" + entry.getValue());

    }

有关更详细的说明,请参阅此帖子:如何在Java中按键对映射值进行排序


如果您准备好了hashmap和数据,那么只需要迭代hashmap键。只需实现一个迭代并逐个获取数据。

检查:遍历哈希图


map.values()为您提供一个集合,其中包含hashmap中的所有值