不,不能这样做,因为地图中的每个值都有一个唯一的键。
您对这些概念的理解感到困惑。我建议先了解 HashMap 的工作原理。链路 1和 链路 2
我认为您在这里关心的是向同一个存储桶添加新的条目对象,但这并不意味着您可以使用相同的键映射两个值,不,一点也不!
HashMap 中的 Bucket 值存储为Entry
Class 的 Objects,其属性为单键和单值 (Value can be simple object or Collection Object).
以下是了解 HashMap 的工作需要了解的一些要点 -
- HashMap 有一个名为 Entry 的内部类,用于存储键值对。
- 上面的Entry 对象存储在Entry 称为表中。
- 表的索引在逻辑上称为桶,它存储链表的第一个元素。
- Key 对象的 hashcode() 用于查找该 Entry 对象的存储桶。
- 如果两个 key object 具有相同的 hashcode,它们将进入 table 数组的同一个桶中。
- 键对象的equals()方法用于保证键对象的唯一性。
- 根本不使用值对象的 equals() 和 hashcode() 方法。
您的问题的可能解决方案 -
但是,您可以通过使用由 key 映射的 Collection Object来实现您所需要的,然后您可以遍历集合对象以读取所有值。
下面是使用列表的示例 -
import java.util.*;
class Practice {
public static void main(String [] args)
{
String s="Sameer";
HashMap<String,List<String>> map=new HashMap();
List<String> lastNameList = new ArrayList<String>();
lastNameList.add("Patel");
lastNameList.add("Singh");
map.put(s, lastNameList);
List<String> getList=(ArrayList)map.get(s);
for(String val : getList) {
System.out.println(val);
}
}
}
现在输出将是 -
Patel
Singh
您可以将此想法扩展到任何级别。由你决定。
希望它会有所帮助!