Java 如何迭代 MultivaluedMap 并提取键及其对应的第一个值?
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/24991176/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
How to iterate over MultivaluedMap and extract the key and its corresponding first value?
提问by John Doe
Here is my code its my first attempt . But what is the correct way to do this.
这是我的代码,这是我的第一次尝试。但这样做的正确方法是什么。
private Map<String,String> prepareParameters(MultivaluedMap<String, String> queryParameters) {
Map<String,String> parameters = new HashMap<String,String>();
for (Map.Entry<String,List<String>> e : queryParameters.entrySet()) {
parameters.put(e.getKey(), e.getValue().get(0));
}
采纳答案by John Doe
One way to do this can be :--
一种方法可以是:--
private Map<String,String> prepareParameters(MultivaluedMap<String, String> queryParameters) {
Map<String,String> parameters = new HashMap<String,String>();
Iterator<String> it = queryParameters.keySet().iterator();
while(it.hasNext()){
String theKey = (String)it.next();
parameters.put(theKey,queryParameters.getFirst(theKey));
}
return parameters;
}
OR without using the iterator, as suggested by Dinei Rockenbach, we can do as follow:-
或者不使用迭代器,如 Dinei Rockenbach 所建议的,我们可以执行以下操作:-
private Map<String,String> prepareParameters(MultivaluedMap<String, String> queryParameters) {
Map<String,String> parameters = new HashMap<String,String>();
for(String str : queryParameters.keySet()){
parameters.put(str, queryParameters.getFirst(str));
}
return parameters;
}
回答by Gregor
Or using streams...
或者使用流...
queryParameters.getRequestHeaders().entrySet().stream()
.collect(
Collectors.toMap(
Map.Entry::getKey, entry -> entry.getValue().stream().findFirst().orElse(null)));
queryParameters.getRequestHeaders().entrySet().stream()
.collect(
Collectors.toMap(
Map.Entry::getKey, entry -> entry.getValue().stream().findFirst().orElse(null)));