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实现除此之外,你所说的“那没有必要”是什么意思?有些东西是必要的,说“那不是必要的”听起来好像有一个更简单的解决方案,但有什么比宽松的复制构造函数更简单呢?