Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/386.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 多重价值地图<;字符串,字符串>;多值映射<;字符串,对象>;_Java_Hashmap_Type Conversion_Multivalue - Fatal编程技术网

Java 多重价值地图<;字符串,字符串>;多值映射<;字符串,对象>;

Java 多重价值地图<;字符串,字符串>;多值映射<;字符串,对象>;,java,hashmap,type-conversion,multivalue,Java,Hashmap,Type Conversion,Multivalue,我有一个MultivaluedMap strMap,我想把它转换成MultivaluedMap objMap 我在下面的帖子中尝试了几条路线,但似乎都不管用 今天我遇到了同样的问题,经过大量搜索,我找到了以下解决方案: public static MultivaluedMap<String, Object> asObjectHeaders(MultivaluedMap<String, String> headers) { if (headers == null)

我有一个
MultivaluedMap strMap
,我想把它转换成
MultivaluedMap objMap

我在下面的帖子中尝试了几条路线,但似乎都不管用


今天我遇到了同样的问题,经过大量搜索,我找到了以下解决方案:

public static MultivaluedMap<String, Object> asObjectHeaders(MultivaluedMap<String, String> headers) {
    if (headers == null) {
        return null;
    } else {
        MultivaluedMap<String, Object> map = new MultivaluedHashMap<>();
        for (Map.Entry<String, List<String>> entry : headers.entrySet()) {
            if (entry.getValue() != null) {
                map.addAll(entry.getKey(), new LinkedList<Object>(entry.getValue()));
            }
        }
        return map;
    }
}
public静态多值映射asObjectHeaders(多值映射头){
if(headers==null){
返回null;
}否则{
多值映射=新的多值映射();
for(Map.Entry:headers.entrySet()){
if(entry.getValue()!=null){
map.addAll(entry.getKey(),newLinkedList(entry.getValue());
}
}
返回图;
}
}
或者,如果您使用的是番石榴,则可以使用以下代码:

public static MultivaluedMap<String, Object> asObjectHeaders(MultivaluedMap<String, String> headers) {
    if (headers == null) {
        return null;
    } else {
        return new AbstractMultivaluedMap<String, Object>(Maps.transformValues(headers, new Function<List<String>, List<Object>>() {
            @Override
            public @Nullable List<Object> apply(@Nullable List<String> strings) {
                if (strings != null) {
                    return new LinkedList<>(strings);
                } else {
                    return null;
                }
            }
        })) {};
    }
}
public静态多值映射asObjectHeaders(多值映射头){
if(headers==null){
返回null;
}否则{
返回新的AbstractMultivaluedMap(Maps.transformValues(headers,new Function()){
@凌驾
public@Nullable List apply(@Nullable List strings){
if(字符串!=null){
返回新的LinkedList(字符串);
}否则{
返回null;
}
}
})) {};
}
}
或者,如果您使用的是jersey客户端glassfish,则可以使用以下选项:

public static MultivaluedMap<String, Object> asObjectHeaders(MultivaluedMap<String, String> headers) {
    if (headers == null) {
        return null;
    } else {
        return new AbstractMultivaluedMap<String, Object>(Views.mapView(headers, LinkedList::new)) {};
    }
}
public静态多值映射asObjectHeaders(多值映射头){
if(headers==null){
返回null;
}否则{
返回新的AbstractMultivaluedMap(Views.mapView(headers,LinkedList::new)){};
}
}

也有同样的情况,有效的解决方案-

MultiValuedMap<String, String> multivaluedMap = //store the value here 
Collection<Map.Entry<String, String>> entries = multivaluedMap.entries();

for(Map.Entry<String, String> ent : multivaluedMap.entries()){
    entityList.add(ent.getKey()+ " " + ent.getValue());
}
MultiValuedMap MultiValuedMap=//将值存储在此处
集合条目=多值Map.entries();
对于(Map.Entry ent:multivaluedMap.entries()){
添加(ent.getKey()+“”+ent.getValue());
}

你说的“似乎有用”是什么意思?你没试过吗?为什么不呢?你能添加你的代码和问题/错误吗?你问的是哪个
MultivaluedMap
?我认为
MultivaluedMap
的未实现可能像
。如果将其转换为
,则必须转换列表中的每个值。@Tom“当OP使用Apache实现时”?OP还没有响应,但是如果你看一下我引用的两个名称,Apache实现实际上在
value
中的
V
字符的大小写是错误的,因此OP很可能使用JAX-RS实现,而不是Apache实现除此之外,你所说的“那没有必要”是什么意思?有些东西是必要的,说“那不是必要的”听起来好像有一个更简单的解决方案,但有什么比宽松的复制构造函数更简单呢?