首页 > 解决方案 > 我可以在 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?

标签: java

解决方案


我可以在 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}

推荐阅读