Вы можете просто использовать это:
Document document = Jsoup.parse(html);
Elements dts = document.getElementsByClass("dt dlterm");
Elements dds = document.getElementsByClass("dd");
if (dts.size() != dds.size()) {
// ensure same sizes of both lists
}
HashMap<String, String> values = new HashMap<>();
for (int i = 0; i < dts.size(); i++) {
values.put(dts.get(i).text(), dds.get(i).text());
}
Или только одним оператором, использующим потоки Java:
Map<String, String> values = IntStream.range(0, Math.min(dts.size(), dds.size())).boxed()
.collect(Collectors.toMap(i -> dts.get(i).text(),i -> dds.get(i).text()));
Результат будет таким:
{Risk=details of it two, Event=detials of it three., Incident=detials of one}
Если вы хотите убедиться, что порядок на карте такой же, как в HTML-коде, используйте LinkedHashMap
вместо HashMap
.