【问题标题】:HashMap put in a loopHashMap 放在一个循环中
【发布时间】:2018-12-10 11:38:28
【问题描述】:
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 中,放置 repo 的名称但不放置 userCommitCount Map。

【问题讨论】:

  • "你看到在第一个 put 命令中放了键,但是 hashMap 没有放,它改变了下一次迭代" 你能重新调整这个吗?我不知道你在说什么
  • 到底是什么问题?
  • 所以它应该喜欢这个 zookeeper - { hanm = 4,anmolnar = 23, lvangfin = 3 } 而不是 zookeeper - { } 这 3 个(hanm、anmolar 和 lvangfin)以某种方式丢弃。

标签: java for-loop hashmap


【解决方案1】:

您正在打印两次哈希映射:

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

也许您应该只打印一次?

【讨论】:

    猜你喜欢
    • 2011-05-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-11
    • 1970-01-01
    • 2011-10-08
    • 1970-01-01
    • 2015-03-08
    相关资源
    最近更新 更多