我最近对Java中的Rest API很感兴趣,了解到了MultivaluedMap。但我并不清楚MultivaluedMap相比于HashMap、TreeMap或LinkedHashMap等类的优势在哪里。请解释一下什么情况下需要使用MultivaluedMap。
一组键值对的映射表。每个键可以有零个或多个值。
Map
是:
将键映射到值的对象。一个映射不能包含重复的键;每个键最多只能映射到一个值。
因此,在MultivaluedMap
中,您可以插入0、1、2、3或更多与同一键相关的对象。
在Map
中,您只能插入与键相关的一个对象。
这就是它们之间的区别,如果您需要存储与单个键相关的多个值,则它可能很有用,如果只有一个值,则它们类似。
一个可能的场景是,您保存以字母开头的所有相关单词的字典。 键是A B C…Z,而值是单词。
A -> Acid
Apple
August
B -> Banana
Boat
C -> Car
Chain
...
Z -> Zebra
可以使用以下代码编写:
MultivaluedMap<String, String> multiMap = new MultivaluedHashMap<>();
multiMap.add("A", "Acid");
multiMap.add("A", "Apple");
multiMap.add("A", "August");
multiMap.add("B", "Banana");
multiMap.add("B", "Boat");
multiMap.add("C", "Car");
multiMap.add("C", "Chain");
multiMap.add("Z", "Zebra");
另一种情况是一个Map,它保存了用户购买的所有产品。键是用户ID,值是产品。
USER1 -> Pizza Margherita
Pizza Pepperoni
USER2 -> Pizza Margherita
USER3 -> Pizza Margherita
Pizza Pepperoni
Pizza Four Cheese
http://foo.com?id=1&id=2&id=3
。您需要一个MultivaluedMap
来将键id
与值列表1、2、3放在一起。 - Paul Samsotha