Решение с Java 8.
Этот фрагмент кода преобразует строку запроса в список ключ / значение:
List<AbstractMap.SimpleEntry<String, String>> list =
asList(queryString.split("&")).stream()
.map(s -> copyOf(s.split("="), 2))
.map(o -> new AbstractMap.SimpleEntry<String, String>(o[0], o[1]) )
.collect(toList());
комментарий @Tuno вдохновил меня написать новый ответ, это альтернативное (и более короткое) решение использует groupingBy
метод:
Map<String, List<String>> llist =
asList(queryString.split("&")).stream()
.map(s -> copyOf(s.split("="), 2))
.collect(groupingBy(s -> s[0], mapping(s -> s[1], toList())));
Я предлагаю декодировать значения с помощью URLDecoder.decode(String s, String enc)
Оба решения выводят содержимое коллекции с помощью этой строки:
list.stream().forEach(s -> System.out.println(s.getKey() + " = " + s.getValue()));