Если вы используете Java 8, и вы готовы написать несколько методов многократного использования, вы можете сделать это в одной строке.
private Map<String, List<String>> parse(final String query) {
return Arrays.asList(query.split("&")).stream().map(p -> p.split("=")).collect(Collectors.toMap(s -> decode(index(s, 0)), s -> Arrays.asList(decode(index(s, 1))), this::mergeLists));
}
private <T> List<T> mergeLists(final List<T> l1, final List<T> l2) {
List<T> list = new ArrayList<>();
list.addAll(l1);
list.addAll(l2);
return list;
}
private static <T> T index(final T[] array, final int index) {
return index >= array.length ? null : array[index];
}
private static String decode(final String encoded) {
try {
return encoded == null ? null : URLDecoder.decode(encoded, "UTF-8");
} catch(final UnsupportedEncodingException e) {
throw new RuntimeException("Impossible: UTF-8 is a required encoding", e);
}
}
Но это довольно жестокая строка.
В более новой версии gazebo есть некоторые библиотеки, которые были перенесены в библиотеку зажигания, поэтому вы должны следовать им в руководстве по зажиганию 5.0.0.
А также по этому пути функция-член GetWorldPose была переименована в WorldPose.