HashMap положить в цикл - PullRequest
       1

HashMap положить в цикл

0 голосов
/ 10 декабря 2018
for (int i = 0; i < projectList.size(); i++) {
        String projectName = projectList.get(i);
        String url = "https://api.github.com/repos/apache/" + projectName + "/commits";

        try {
            data = Jsoup.connect(url).timeout(30000).ignoreContentType(true).execute().body();
            System.out.println(url);
            // System.out.println(data);

        } catch (Exception e) {
            e.printStackTrace();
        }
        objArray = new JSONArray(data);

        for (int i1 = 0; i1 < objArray.length(); i1++) {
            obj = objArray.getJSONObject(i1);               

            if (!obj.isNull("committer")) {
                obj1 = obj.getJSONObject("committer");
                commiterName = obj1.getString("login");
            }
            else {
                continue;
            }
            if (!UserCommitCount.containsKey(commiterName)) {
                UserCommitCount.put(commiterName, 1);
            } else {
                UserCommitCount.put(commiterName, UserCommitCount.get(commiterName) + 1);
            }

        }
        UserCommitCount = sortByComparator(UserCommitCount, DESC);
        UserCommitCount = resizeUserCommitCount(UserCommitCount);
        printHashMap(UserCommitCount);
        System.out.println(projectName + "!!!!");
        printHashMap(UserCommitCount);

        RepoNameCommitterMap.put(projectName, UserCommitCount);
        UserCommitCount.clear();
        System.out.println(projectName+ "AFTER");
        printHashMap(UserCommitCount);
        printNestedHashMap(RepoNameCommitterMap);
    }

Итак, я пытаюсь сохранить данные в Hashmap, и результат выглядит так:

https://api.github.com/repos/apache/zookeeper/commits

hanm - 4

anmolnar - 23

lvfangmin - 3

zookeeper!!!!

hanm - 4

anmolnar - 23

lvfangmin - 3


zookeeper - {}
https://api.github.com/repos/apache/camel/commits

davsclaus - 9

oscerd - 20

PascalSchumacher - 1

camel!!!!

davsclaus - 9

oscerd - 20

PascalSchumacher - 1

camelAFTER

zookeeper - {davsclaus=9, oscerd=20, PascalSchumacher=1}

camel - {}

https://api.github.com/repos/apache/httpd/commits

minfrin - 1

elukey - 2

ylavic - 6

jfclere - 3

notroj - 4

jimjag - 1

httpd!!!!

minfrin - 1

elukey - 2

ylavic - 6

jfclere - 3

notroj - 4

jimjag - 1

httpdAFTER

zookeeper - {davsclaus=9, oscerd=20, PascalSchumacher=1}

camel - {minfrin=1, elukey=2, ylavic=6, jfclere=3, notroj=4, jimjag=1}

httpd - {}

И продолжается.Вы видите, что в первом ключе команды put поставлен, но hashMap нет, и он сдвигает следующую итерацию.Я не мог понять, почему это происходит.Может ли кто-нибудь помочь мне это исправить?

В первой итерации ReponameCommiter.put помещает имя репо, но не помещает карту userCommitCount.

1 Ответ

0 голосов
/ 10 декабря 2018

Вы печатаете хеш-карту дважды:

printHashMap(UserCommitCount);
System.out.println(projectName + "!!!!");
printHashMap(UserCommitCount);

Возможно, вам следует печатать только один раз?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...