как предотвратить переопределение метода в java

У меня есть этот код. Whis ищет excel csv и создает файл .txt с отсутствующими субтитрами для фильмов. Один фильм может содержать один или два или три или четыре субтитров. В excel он написан как Y или N для каждого языка. Он работает на одном языке (INDO). Я добавил другие языки (GBR, SIM, MYS) в excel и здесь.

int INDOSUB = 4; int GBRSUB = 5; int SIMSUB = 6; int MYSSUB = 7; int KPPNAME = 1; ... //NEW REQUIREMENT, CHECK PLAYLIST FOR MISSING SUBTITLES for(int i=0; i < assets.size(); i++) { try { file = new File(assets.get(i)); fileReader = new FileReader(file); bufferedReader = new BufferedReader(fileReader); while((line = bufferedReader.readLine()) != null) { tmp = line.split(","); if(tmp.length > 4) { String indosubStatus = tmp[INDOSUB]; String gbrsubStatus = tmp[GBRSUB]; String simsubStatus = tmp[SIMSUB]; String myssubStatus = tmp[MYSSUB]; String kppKey = tmp[KPPNAME]; if(indosubStatus.equals("N")) { kppSubitleMap.put(kppKey,"NO INDO SUBTITLES"); kppWithMissingSub.put(tmp[KPPNAME],""); } if(gbrsubStatus.equals("N")) { kppSubitleMap.put(kppKey,"NO GBR SUBTITLES"); kppWithMissingSub.put(tmp[KPPNAME],""); } if(simsubStatus.equals("N")) { kppSubitleMap.put(kppKey,"NO SIM SUBTITLES"); kppWithMissingSub.put(tmp[KPPNAME],""); } if(myssubStatus.equals("N")) { kppSubitleMap.put(kppKey,"NO MYS SUBTITLES"); kppWithMissingSub.put(tmp[KPPNAME],""); } } } } catch(IOException ex) { System.out.println(ex.toString()); } } 

Когда он запускается, это показывает только это. И я уверен, что у KPP_Heartless нет субтитров GBR и SIM. Но он показывает только последний. Таким образом, это кажется его предыдущей записью.

 KPP_HEARTLESS_19 - NO MYS SUBTITLES DATE/TIME: 1/11/2017 - 23:45:09:20 DATE/TIME: 1/12/2017 - 04:45:07:21 DATE/TIME: 1/12/2017 - 12:30:08:20 DATE/TIME: 1/12/2017 - 17:30:04:19 KPP_LISTEN_07 - NO INDO SUBTITLES DATE/TIME: 1/12/2017 - 03:30:11:24 DATE/TIME: 1/12/2017 - 07:30:13:13 DATE/TIME: 1/12/2017 - 15:00:10:10 KPP_LISTEN_08 - NO INDO SUBTITLES DATE/TIME: 1/12/2017 - 20:00:10:05 KPP_HEARTLESS_20 - NO MYS SUBTITLES DATE/TIME: 1/12/2017 - 23:45:09:19 

Кто-нибудь знает, как предотвратить его от переоценки? Большое спасибо.

Он не имеет отношения к первостепенному методу.

Проблемы возникают, когда вы пишете:

 kppSubitleMap.put(kppKey,"NO SIM SUBTITLES"); kppWithMissingSub.put(tmp[KPPNAME],""); 

вы перезаписываете значение, связанное с ключом.

1) Если вы хотите иметь несколько значений на карте, вы можете использовать значения List или Set as. Например: Map<String, List<String>> .

Вот пример того, что вы должны делать с картой kppSubitleMap но проблема такая же, как и в kppWithMissingSub .

 if(gbrsubStatus.equals("N")){ List<String> values = kppSubitleMap.get(kppKey); if (values = null){ values = new ArrayList<String>(); } values.add("NO GBR SUBTITLES"); kppSubitleMap.put(kppKey, values); ... } 

Код плиты котла должен выполняться в утилите, чтобы избежать повторения в каждом блоке if :

 public List<String> getOrCreateList(Map<String,List<String>> map, String key){ List<String> values = map.get(kppKey); if (values = null){ values = new ArrayList<String>(); } return values; } 

2) Если вы хотите просто объединить информацию, которую вы могли бы сделать:

 String value = kppSubitleMap.get(kppKey); if (value==null){ value = ""; } value += "NO GBR SUBTITLES"); kppSubitleMap.put(kppKey, value ); 

Когда вы вызываете Map.put () несколько раз, Map содержит только последнее значение для одного и того же ключа. Вы можете использовать Map<String, Set<String>> Пример:

 Set<String> values = kppSubitleMap.get(kppKey); if (values == null) { values = new HashSet<>(); kppSubitleMap.put(kppKey, values); } values.add("NO GBR SUBTITLES") 

или используйте Guava.Multimaps

  • Правила от excel в Java-приложениях
  • Код выполняется успешно, но данные добавляются в excel только на финальной итерации
  • Как перебирать столбцы, чтобы получать данные с помеченными строками в Excel?
  • Как создать объект строки Excel
  • Отобразить лист Excel в браузере?
  • Вставка данных в MySQL из Excel Программа JDBC - POI
  • Как скопировать лист между учебниками Excel в Java
  • максимальное количество элементов формата с использованием предупреждения по умолчанию
  • Аутентификация входа пользователя в селен?
  • Есть ли способ отмечать метаданные как прочитанные только в Excel
  • Как создать несколько листов в excel на основе значений, переданных из вывода запроса
  • Interesting Posts

    Поиск рабочей книги и извлечение данных без ее открытия excel vba

    Пользовательский интерфейс Kendo: необходимо экспортировать сетку с разноцветными ячейками, чтобы преуспеть

    Jar для пакета Java org.apache.poi.hssf.usermodel. *

    расширенная функциональность на html-таблице

    Надстройки не загружаются при открытии файла excel программно

    Автоматическая смена формата времени Excel

    Как извлекать и заполнять данные на основе двух соответствующих ячеек

    Поиск нескольких столбцов Excel, отображение пользовательского текста

    Код VBA не корректирует даты для всех строк данных

    Проверка диапазонов информации – двойной щелчок

    Код VBA только удаляет часть того, что он должен

    Итерирование через диапазон Excel

    Excel import xml data (несколько строк, столбец с текстом)

    Открытие Excel с помощью COM отображает фиолетовые ламы?

    Запустите макрос после выполнения фильтра в VBA (Excel)

    Давайте будем гением компьютера.