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));
      }
    }
  }

→ Ссылка