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

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-14 16:17:29  来源:igfitidea点击:

How to iterate over MultivaluedMap and extract the key and its corresponding first value?

javajerseyjersey-2.0

提问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)));