在一个循环或两个单循环的hash map的hash map中输入数据

阿什特班萨尔

我有一个以下类型的列表:RepoID、Userid、事件计数(8 种类型)

例子:

Repoid1, user1,8,1,0,2,3,4,5,9
Repoid1, user2,5,6,0,0,0,4,5,9
Repoid2, user1,5,0,5,2,3,4,5,1
Repoid3, user4,0,6,9,2,3,4,5,2

对于每个 Repo,我想找到用户的每个事件类型的计数。我正在使用 hashmap 的 hashmap 但我不想使用 2 个循环,因为文件太大。有没有办法在单个循环中完成它或使用 2 个单个循环?

我目前正在使用 2 个循环:

for (int i = 0; i < data.size(); i++) { //data is an arraylist
    String[] seq = data.get(i).split(",");
    String repo=seq[0];
    for (int j = 0; j < data.size(); j++) {
        seq = data.get(j).split(",");
        if(seq[0].equals(repo)){
            usermap.put(seq[1],"seq[2] + "," + seq[3] + "," + seq[4] + "," + seq[5] + 
                "," + seq[6]    + "," + seq[7] + "," + seq[8] + "," + seq[9]");
        } 
    }
    RepoUserMap.put(repo, EventsMap);
}
斯蒂芬·C

您的问题描述不清楚,但鉴于您的输入文件,以下内容可能满足您的需求:

HashMap<String, HashMap<String, String>> repoUserMap = new HashMap<>();

for (int i = 0; i < data.size(); i++) { //data is an arraylist
    String[] seq = data.get(i).split(",");
    String repo = seq[0];

    // Lookup the 2nd-level map, and create it if it doesn't exist yet.
    HashMap<String, String> userMap = repoUserMap.get(repo);
    if (userMap == null) {
        userMap = new HashMap<>();
        repoUserMap.put(repo, userMap);
    }

    usermap.put(seq[1],"seq[2] + "," + seq[3] + "," + seq[4] + "," + seq[5] + 
            "," + seq[6]    + "," + seq[7] + "," + seq[8] + "," + seq[9]");
 }

带有注释的中间部分是您遗漏的部分(概念上)。


如果需要合并来自同一用户和存储库的多个输入行的计数,那么您将在循环的最后一行进行。但是,这并未在您的代码、示例或描述中指明,因此我假设不需要它。

我还要指出,如果您这样做是为了快速查找计数,那么您应该将它们存储为整数数组,而不是每次查找计数时都需要拆分和解析的字符串。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何将两个 foreach 循环替换为一个赋值(mb 两个 array_map 函数)?

使用另一个Hash map Java中给出的过滤条件过滤Hash map列表

JavaScript-优化两个array.map循环

在 javascript 中循环遍历一个不可变的 Map

合并两个Seq以创建一个Map

让if / else在列表理解中突破一个循环,循环遍历两个范围

CodeIgniter:在视图中显示两个表中的数据-使用一个循环?

用R中的两个for循环创建一个矩阵/数据框

Groovy 将两个列表转换为一个 Map [ Map<String,List<String>>]

Java中的一个简单循环字符串需要审查

如何在Laravel中的一个html表中运行两个foreach循环?

Scanf对标准输入采用两个循环值,但仅需一个就可以结束循环

使用 Jinja 的一个 HTML 页面中的两个 For 循环(不工作)

MATLAB 中的两个 for 循环,一个不起作用

制作一个循环,从两个文件夹中获取相同的名称对?

一个列表理解中的两个for循环分别

如何使用php在一个mysql查询中运行两个循环

使用JavaScript中的循环从一个对象创建两个对象时出错

如何在Java中仅用一个循环将两个矩阵相乘?

如何在一个循环中迭代以比较 javascript 中的两个对象

R循环计算两个变量中的每一个的平均值

Symbol表和Hash map数据结构之间的区别

sparse_hash_map对于特定数据非常慢

仅将两个对象的循环数组分配给Map?

我需要在 Javascript 中做两个循环,一个 do/while 和一个 For

immutable.js从map / hash获取密钥

如果我需要JS中第一个循环的结果,如何避免运行两个循环

Java Map类可以包含一个值的两个或更多键

C ++ STL中hash_map结构的内存成本