Java 6接口多值映射有什么用途?

Java 6接口多值映射有什么用途?,java,data-structures,jax-rs,java-6,Java,Data Structures,Jax Rs,Java 6,Java 6接口有什么用?它是键值对的映射。每个键可以有零个或多个值 public interface MultivaluedMap<K,V> extends java.util.Map<K,java.util.List<V>> 公共接口多值映射扩展了java.util.Map 该接口不属于“Java”,这意味着该接口不是核心库的一部分。它是规范中的javax.ws.rs层次结构的一部分。它由实现规范的框架使用,例如。每当贴图不仅要引用单个值,还要引用任意数

Java 6接口有什么用?

它是键值对的映射。每个键可以有零个或多个值

public interface MultivaluedMap<K,V> extends java.util.Map<K,java.util.List<V>>
公共接口多值映射扩展了java.util.Map

该接口不属于“Java”,这意味着该接口不是核心库的一部分。它是规范中的
javax.ws.rs
层次结构的一部分。它由实现规范的框架使用,例如。每当贴图不仅要引用单个值,还要引用任意数量的值时,都会使用它。例如,使用请求头的存储,您可能希望在其中为每个键添加多个值。或者,在某些情况下,与
null
值相比,更容易处理空列表,甚至没有键

以这个HTTP头为例:

public void get(@Context UriInfo ui) {
  MultivaluedMap params = ui.getRequestUri().getQuery();
  // now do what you want with your params
}
接受编码:压缩;q=0.5,gzip;q=1.0

你可以用

MultivaluedMap<String, String> map = ...
map.add("Accept-Encoding", "compress;q=0.5");
map.add("Accept-Encoding", "gzip;q=1.0");
多值映射=。。。
添加(“接受编码”、“压缩;q=0.5”);
add(“接受编码”,“gzip;q=1.0”);
在泽西岛内部。这种类型的多值存储是Java中的一个常见问题,其他映射的实现者(如)也解决了这个问题

这基本上就是javadoc所说的:

键值对的映射。每个键可以有零个或多个值


多值DMAP的一个很好的用途是与UriInfo一起使用。如果您正在编写一个接受多个QueryParams的REST端点,那么可以使用UriInfo获取所有参数,并使用getQuery()调用提取它们。例如:

public void get(@Context UriInfo ui) {
  MultivaluedMap params = ui.getRequestUri().getQuery();
  // now do what you want with your params
}

多值映射很有用,因为可以有多个值的参数。例如,如果它是一个客户数据库,并且您希望获得多个客户,那么您的地图将具有“customerID”键和多个链接到它的值

多值映射是
javax.ws.rs.core
包的一部分,而不是核心Java。它主要用于在请求中存储头值

private MediaType getMediaType(Class entityClass, Type entityType, MultivaluedMap<String, Object> headers) {
     final Object mediaTypeHeader = headers.getFirst("Content-Type");
         ....
}

他问的是使用这种功能的场景。我可以看出它很少被使用,我对用例感兴趣?小评论-认为调用应该是getQueryParameters()。Op问的是用法而不是定义这里有一个如何初始化它的示例:
MultivaluedMap=new MultivaluedMapImpl()