How to request.getParameterNames into List of strings?
Matthew Martinez
Is it possible to get request.getParameterNames() as a list of Strings? I need to have it in this form.
4 Answers
Just construct a new ArrayList wrapping the keyset of the request parameter map.
List<String> parameterNames = new ArrayList<String>(request.getParameterMap().keySet());
// ...I only wonder how it's useful to have it as List<String>. A Set<String> would make much more sense as parameter names are supposed to be unique (a List can contain duplicate elements). A Set<String> is also exactly what the map's keyset already represents.
Set<String> parameterNames = request.getParameterMap().keySet();
// ...Or perhaps you don't need it at all for the particular functional requirement for which you thought that massaging the parameter names into a List<String> would be the solution. Perhaps you actually intented to iterate over it in an enhanced loop, for example? That's also perfectly possible on a Map.
for (Entry<String, String[]> entry : request.getParameterMap().entrySet()) { String name = entry.getKey(); String value = entry.getValue()[0]; // ...
} 1 It is possible to getParameterNames from servlets by using HttpServletRequest.getParameterNames() method. This returns an enumeration. We can cast the enemeration elements into string and add those into an ArrayList of parameters as follows.
ArrayList<String> parameterNames = new ArrayList<String>(); Enumeration enumeration = request.getParameterNames(); while (enumeration.hasMoreElements()) { String parameterName = (String) enumeration.nextElement(); parameterNames.add(parameterName); } // you can do whatever you want to do with parameter lists.. You can probably use this:
List<String> parameterNamesList = Collections.list(request.getParameterNames());
You could use Guava to convert the Enumeration to an Iterator, and then the Iterator to a List:
Lists.<String> newArrayList(Iterators.forEnumeration(request.getParameterNames()))