在 Java Map 中为每个键分配多个值

Rob*_*uch 1 java java-8

Map在 Java 中创建标准很容易。

Map<Integer, String> map = new HashMap<>();
map.put(1, "Name 1");
map.put(2, "Name 2");
Run Code Online (Sandbox Code Playgroud)

现在我需要“扩展”这种标准映射方法,以便每个键可以表示多个值,例如:

Map<Integer, String, String, String> map = new HashMap<>();
map.put(1, "Name 1", "Address 1", "ZIP Code 1");
map.put(2, "Name 2", "Address 2", "ZIP Code 2");
Run Code Online (Sandbox Code Playgroud)

是否有任何“标准”实现或库提供这样的功能?我知道例如 Apache Commons MultiValuedMap( https://commons.apache.org/proper/commons-collections/apidocs/org/apache/commons/collections4/MultiValuedMap.html ) 但这似乎不适合上述用途案件。

Mad*_*ist 6

更好的选择可能是让对象包含您的信息:

public class Person
{
    private String name;
    private String address;
    private String zip;

    ...
}
Run Code Online (Sandbox Code Playgroud)

您可以使用该类作为您的值类型:

Map<Integer, Person> map = new HashMap<>();
map.put(1, new Person("Name 1", "Address 1", "ZIP Code 1"));
map.put(2, new Person("Name 2", "Address 2", "ZIP Code 2"));
Run Code Online (Sandbox Code Playgroud)

从 java 16 开始,您可以使用记录类来制作容器:

record Person(String name, String address, String zip) {}
Run Code Online (Sandbox Code Playgroud)