如何迭代MultivaluedMap并提取密钥及其相应的第一个值?

Joh*_*Doe 10 java jersey jersey-2.0

这是我的第一次尝试的代码.但是这样做的正确方法是什么.

    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));
    } 
Run Code Online (Sandbox Code Playgroud)

Joh*_*Doe 20

一种方法是: -

  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;

    }
Run Code Online (Sandbox Code Playgroud)

或者不使用迭代器,如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;

    }
Run Code Online (Sandbox Code Playgroud)

  • 可以简单地使用`for(String theKey:queryParameters.keySet()){...}`而不是直接使用`Iterator`. (4认同)