繁体   English   中英

在HashMap中显示键值

[英]Displaying key-values in HashMap

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

1.我在哈希图中有两次“两次”键,而在打印时,“两次”仅显示一次。为什么两次不显示“两次”?

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);
    }

}
}

哈希图的键集中每个键只能有一个键条目。 当您对地图使用相同的键(包括HashMap)时,第二次在地图中放置键值对将覆盖第一次。

如果要一对多映射,则可以使用将对象映射到对象集合的Multimap或HashMap(尽管Multimap最有可能使您更轻松地进行此操作)

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

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

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");

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM