0
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>> примерно такой результат пытался нагуглить что-то похожее, безуспешно

задан 19 авг. 2022 в 8:50
4
  • 4
    опишите пожалуйста какую задачу вы пытаетесь решить, а то вложенность ваших массивов немного смущает Commented 19 авг. 2022 в 8:53
  • Добавьте в вопрос что пытались сделать, и конкретные примеры данных - что исходно есть, что должно получиться. Commented 19 авг. 2022 в 8:59
  • @Andrew пока не задал вопрос сюда не мог решить, эффект уточки сработал) Задача в том, что у меня есть станок (токраный к примеру) у него есть регламент по осмотру (общий осмотр станка) в который входят (осмотр дверей, осмотр окон и тд) и мне вся эта инфа нужна была в виде Map<Токарный станок, Map<Общий осмотр станка, Set<Окна, Двери>>> Commented 19 авг. 2022 в 8:59
  • спасибо, что отвлеклись) стремно немного ;D Commented 19 авг. 2022 в 9:00

1 ответ 1

0

Собрал сначала первую 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));
 }
 }
 }
ответ дан 19 авг. 2022 в 9:00
2
  • 1
    добавьте пожалуйста немного больше контекста в ответ, потому что в текущем виде он не обладает какой-либо пользой для сообщества и полезен очень узкому кругу людей :( Commented 19 авг. 2022 в 9:01
  • @Andrew надеюсь лучше... Commented 19 авг. 2022 в 9:10

Начните задавать вопросы и получать на них ответы

Найдите ответ на свой вопрос, задав его.

Задать вопрос

Изучите связанные вопросы

Посмотрите похожие вопросы с этими метками.