java - 我可以在 Map 中有两个同名的键吗?
问题描述
我正在尝试创建一个TreeMap
. 以字符为键。我试图通过在 Person 类型的 Vector 上运行来创建它。并从人名中获取第一个字母并将其作为键放在 Map 中。例如:我有 4 个人,他们的名字以 P 开头。我想在向量上运行,并创建一个Map
键是 P。
public class Phonebook{
static Vector<Map<Character, Vector<Person>>> mapVector = new Vector<>();
public void makePhonebook(){
Iterator<Person> personIterator = PeopleDets.getPersons().iterator();
while (personIterator.hasNext()){
Person temp = (Person)personIterator.next();
mapVector.add(new TreeMap<>().put((temp.getName().charAt(0)), );
}
}
我的问题是,它会Map
为 P 字母创建 1 并且使用更多代码会创建一个以 P 开头的人的向量,还是创建像 4 以 P 为键的 Map?
解决方案
我可以在 Map 中有两个同名的键吗?
不,AMap
要求所有键都是唯一的。请查看https://docs.oracle.com/javase/8/docs/api/java/util/Map.html上的文档
新的重复键将覆盖先前重复键的值,例如
import java.util.HashMap;
import java.util.Map;
public class Main {
public static void main(String[] args) {
Map<String, String> map=new HashMap<String,String>();
map.put("A", "Apple");
map.put("A", "Anchor");
System.out.println(map);
}
}
输出:
{A=Anchor}
推荐阅读
- c++ - 如何存储多个用户输入,然后在 C++ 中全部显示
- winapi - 服务名称的长度可以超过注册表项名称的记录长度
- c# - 如何在 Asp.Net Core 2.0 中为控制器单元测试实例化 UrlHelper
- sqlite - 按深度和兄弟顺序排列记录
- shell - 如何将shell脚本args总结为一个字符串
- ruby-on-rails-4 - rails4.2.8carrierwave+mini_magick+Jcrop,图片上传失败
- c# - C# WPF 在变量更改或按钮单击时在两个窗口之间传递数据
- r - Creating ribbons with plotly
- ios - 在 fscalendar 中禁用过去的日子
- reactjs - "
is declared but its value never read" and "Cannot find name " at same time