我有一个以下类型的列表: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);
}
您的问题描述不清楚,但鉴于您的输入文件,以下内容可能满足您的需求:
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] 删除。
我来说两句