我有一个ArrayList<ArrayList<String>>
我想计算一个元素在列表中出现的次数。对于第三个元素我也需要它。
[Demo-Site, "", blah1, 09:58:59, 2015-08-19]
[hitta, "", blah4, 11:17:14, 2015-08-19]
[Demo-Site, "", blah1, 11:26:30, 2015-08-19]
[poc-wim, "", blah2, 11:26:54, 2015-08-19]
[poc-wim, "", blah3, 11:29:46, 2015-08-19]
输出应该是:
[Demo-Site, 2, blah1, 2015-08-19]
[Hitta, 1, blah4, 2015-08-19]
[poc-wim, 1, blah2, 2015-08-19]
[poc-wim, 1, blah3, 2015-08-19]
我知道我可以对数组列表执行此操作,但不太确定如何针对第三个元素执行此操作?
private static void rawReport(ArrayList<ArrayList<String>> data) {
Map<String, Integer> counts = new HashMap<String, Integer>();
for(ArrayList<String> key: data) {
Integer count = counts.get(key.get(0));
if (count == null) {
count = 0;
}
count++;
counts.put(key.get(0), count);
}
for (Entry<String, Integer> entry : counts) {
System.out.println(entry.getKey() + " " + entry.getValue());
}
}
最佳答案
您可以使用 map 来实现此目的。
声明它:
Map<String, Integer> counts = new HashMap<String, Integer>;
然后迭代您的数据并使用以下命令添加每个键:
Integer count = counts.get(key);
if (count == null) {
count = 0;
}
count++;
counts.put(key, count);
然后你可以打印出计数:
for (Entry<String, Integer> entry : counts.entrySet()) {
System.out.println(entry.getKey() + " " + entry.getValue());
}
如果您有一个多部分键(第一列、第三列,可能还有第五列),那么您可以将它们连接在一起以形成字符串形式的键,或者使用 Map
或者,如果您使用的是 Java 8,那么它现在有一些内置的东西可以执行此操作,但最好先了解如何自己执行此操作。
达蒙
关于java - 计算数组中某个元素出现的次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32191209/