Java6接口多值Map有什么用?

n3schb8v  于 2021-07-09  发布在  Java
关注(0)|答案(4)|浏览(249)

Java6接口多值Map有什么用?

x6yk4ghg

x6yk4ghg1#

接口不属于“java”,这意味着接口不是核心库的一部分。它是世界的一部分 javax.ws.rs 层次结构是jax-rs规范的一部分。它由实现规范的框架(如jersey)使用。每当Map不仅要引用单个值,而且要引用任意数量的值时,就使用它。例如,使用请求头的存储,您可能希望为每个键添加多个值。或者在某些情况下甚至没有键,在这些情况下,处理空列表比处理空列表更容易 null 价值观。
以这个http头为例:
接受编码:压缩;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");

在泽西岛内部。这种类型的多值存储是java中的一个常见问题,其他map的实现者(如guava)也解决了这个问题。
javadoc基本上是这么说的:
键值对的Map。每个键可以有零个或多个值。

8ehkhllq

8ehkhllq2#

多值Map的一个好用法是与uriinfo一起使用。如果您正在编写一个接收多个queryparams的rest端点,那么可以使用uriinfo获取所有参数,并使用getquery()调用提取它们。例如:

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

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

bbuxkriu

bbuxkriu3#

多值Map是javax.ws.rs.core包的一部分,而不是核心java。它主要用于存储请求中的头文件值并使用它
私有mediatype getmediatype(类entityclass,类型entitytype,多值Map头){final object mediatypeheader=headers.getfirst(“content type”);…..}
它在uriinfo中也非常有用

private String getJsonpFunctionName(){
    UriInfo uriInfo = getUriInfo();
    if (uriInfo == null) {
        return null;
    }

    MultivaluedMap<String, String> queryParameters = uriInfo.getQueryParameters();
    if (queryParameters == null) {
        return null;
    }
    return queryParameters.getFirst("jsonp");
}
rjee0c15

rjee0c154#

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

public interface MultivaluedMap<K,V> extends java.util.Map<K,java.util.List<V>>

相关问题