在HashMap中显示键值

时间:2015-08-04 12:39:50

标签: java hashmap

关于下面的代码我有两个问题,

1.我的hashmap中有两次键“two”,而打印时,“two”只显示一次。为什么它不显示“two”两次?

2.如何有选择地显示“两个”键?

import java.util.HashMap;
import java.util.Iterator;
import java.util.Set;

public class main {
public static void main(String[] args){
HashMap<String,String> myMap = new HashMap<String,String>();

    myMap.put("one", "1");
    myMap.put("two", "2");
    myMap.put("three", "3");
    myMap.put("two", "4");

    Set <String> mySet =myMap.keySet();
    Iterator itr = mySet.iterator();

    while(itr.hasNext()){
        String key = (String) itr.next();
        System.out.println(key);
    }

}
}

2 个答案:

答案 0 :(得分:3)

Hashmaps在其键集中每个键只能有一个键入口。当你使用相同的地图键(包括HashMap)时,第二次在地图中放置键值对将覆盖第一个键值。

如果你想要一对多的映射,你可以使用Multimap或HashMap将对象映射到一组对象(尽管Multimap很可能会让你更容易)

要显示给定键的值,请使用:

System.out.println(myMap.get(myKey));
System.out.println(myMap.get("two"));

答案 1 :(得分:2)

HashtableHashMap是一对一键值存储。这意味着对于一个键,您只能拥有一个元素。你仍然可以实现你想要的目标:

HashMap<String, List<String>>

向地图添加元素时,必须将其添加到此键的列表中,即

public void add(String key, String value) {
    List<String> list = map.get(key);
    if (list == null) { //if the list does not exist, create it, only once
        list = new ArrayList<String>();
        map.put(key, list);
    }
    list.add(value);
}

现在,当您想要使用此键获取所有元素时:

List<String> elements = map.get("two");

该列表将包含您添加的所有元素。