Map>>
Map<String, Map<String, Set<String>>> unityTableWithNameMachine
(не заполненный)
Map<String, Set<String>> keyWordMap
(заполненный) Map<currentKey , Set<какие-то слова>>
String currentKey
(заполненный)
String nameMachine
(заполненный)
мне надо получить результат Map<nameMachine, Map<keyWordMap.getKey, keyWordMap.getValues>> примерно такой результат пытался нагуглить что-то похожее, безуспешно
Ответы (1 шт):
Собрал сначала первую Map1 keyWordMap.put(currentKey, new HashSet<>());
Во вторую Map2 передал ключ(namesMachine = String) и в качестве значение new HashMap unityTableWithNameMachine.put(namesMachine, new HashMap<>()); Затем вызываю Map2 достаю оттуда по ключу Map1 начинаю работать с ней, записывая свои данные unityTableWithNameMachine.get(namesMachine).put(currentKey,keyWordMap.get(currentKey))
ниже метод который получился(парсер ворд таблицы) p.s сори за говнокод)
@SneakyThrows
private void parseListOfWorksTable(XWPFTable table, Map<String, Set<String>> keyWordMap,
Map<String, Map<String, Set<String>>> unityTableWithNameMachine) {
String currentKey = null;
for (var row : table.getRows()) {
if (helperForParser.cellValueContains(row, 0, "станок")) {
continue;
}
if (row.getTableCells().size() == 1) {
if (!row.getCell(0).getText().contains("MIKRON ")) {
currentKey = row.getCell(0).getText();
currentKey = currentKey.replace("\n", "").trim();
putKeyWordMap(currentKey, keyWordMap);
putUnityTableWithNameMachine(namesMachine, unityTableWithNameMachine);
continue;
}
} else if (row.getTableCells().size() > 2) {
var keyWordPosition = helperForParser.getKeyWordPosition(row);
if (keyWordPosition >= 0) {
currentKey = row.getCell(keyWordPosition).getText();
if (currentKey == null || currentKey.isEmpty()) {
continue;
}
putKeyWordMap(currentKey, keyWordMap);
putUnityTableWithNameMachine(namesMachine, unityTableWithNameMachine);
continue;
}
}
if (currentKey == null || currentKey.isEmpty()) {
continue;
}
if (!row.getCell(0).getText().isEmpty()) {
keyWordMap.get(currentKey)
.add(row.getCell(0).getText().replace("\n", "").replace(";", "").trim());
unityTableWithNameMachine.get(namesMachine)
.put(currentKey, keyWordMap.get(currentKey));
}
}
}