Как вернуть HashMap

181
31 августа 2018, 12:00

Код с сокращениями, тут суть)

public class Main {
    public static void main(String[] args) throws FileNotFoundException, SQLException {
        Map<Integer, String> mapTrackFile = new HashMap<Integer, String>();
        while (sc.hasNextLine()){
            next = sc.nextLine();
            if(next.contains(ABBREVIATYRA)){
                mapTrackFile = Main.recordDataTrackOrMap(sc, next);
            } else if(next.contains(STARTS_OF_FRAGMENT)){
                db.processString (koltrack, mapTrackFile, mapBD, count, sc);
            }
       }
    static Map recordDataTrackOrMap(Scanner sc, String next) {
        Map<Integer, String> mapTrackFile = new HashMap<Integer, String>();
        //тут нахождение нужных параметров
        mapTrackFile.put(number, abbreviatura.trim());
        return mapTrackFile;
    }

MapTrack берётся из файла, у меня получается так, что записывается только последняя пара ключ - значение, ключи у всех разные 100%, то есть перезаписи не происходит, Что я не так понимаю? Подскажите пожалуйста

Answer 1

Так Вы же в методе recordDataTrackOrMap каждый раз возвращаете новую карту для ключ/значение и присваиваете ее в методе main.
Варианта решения 2:
1. Сделать

    Map<Integer, String> mapTrackFile   

из метода main полем класса и убрать

    Map<Integer, String> mapTrackFile = new HashMap<Integer, String>();  

из recordDataTrackOrMap
2. Передавать mapTrackFile из метода main как параметр в метод recordDataTrackOrMap, но опять же

    Map<Integer, String> mapTrackFile = new HashMap<Integer, String>();  

убрать из метода recordDataTrackOrMap

READ ALSO
Нужно передать String из SearchViewAdapter&#39;a в активность

Нужно передать String из SearchViewAdapter'a в активность

Имеется адаптер, в котором на основе запроса формируется строка textToSpeech, мне нужно эту строку передать в активностьКод адаптера:

162
Какие есть применения у this в Java?

Какие есть применения у this в Java?

Я знаю он возвращает ссылку на текущий объект, и с его помощью можно разрешить конфликт локальных и глобальных имен, например в конструктореНо...

181
Не работает Comparator по нескольким полям

Не работает Comparator по нескольким полям

В FullComparator не работает сортировка по нескольким полям (channelName, DateCreated (в обратном порядке) и Fingerprint)Сортирует только по первому

180
Как форматировать дату с таймзоной в просто дату?

Как форматировать дату с таймзоной в просто дату?

Как получить из этой строки 2018-07-11T09:54:40660 +0000 обьект Date?

152