在java中使用多种类型的值进行映射

Sur*_*dra 8 java types key map

我必须完成一个奇怪的特殊场景.其描述如下:

我必须设计一个Map,其中' Keys '总是String类型.但是,其中一个键的' Value '可能是String或List(取决于特定键可以拥有的值的数量.如果该特定键只有一个值,则'Value'将是一个String,并且必须如果密钥包含许多值,则为List.如何完成这种情况?

例如:地图中有2个键,即"姓名"和"电话号码".一个人只能有一个姓名和多个电话号码.所以这里的第一个键,即"Name"应该具有Value的'String'类型,而对于第二个键,即"Phone Nos"应该具有Value的'List'类型.如何申报这样的地图.可能吗?

nfe*_*ner 13

有可能做类似的事情Map<String, Object>.

但是:我强烈建议你考虑你的设计.您应该为您的人使用课程.这样你就可以做到:Map<String, Person>拥有Person姓名,电话号码和其他信息的getter和setter.

示例Person类:

public class Person {

    private String name;
    private List<String> phoneNumbers = Collections.emptyList();

    public void setName(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }

    public void setPhoneNumbers(List<String> phoneNumbers) {
        this.phoneNumbers = phoneNumbers;
    }

    public void addPhoneNumber(String number) {
        phoneNumbers.add(number);
    }

    public List<String> getPhoneNumbers() {
        return phoneNumbers;
    }
}
Run Code Online (Sandbox Code Playgroud)