java - 计算数组中某个元素出现的次数

标签 java

我有一个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 代替,其中 Key 是您创建的类来表示需要定义 hashCode 和 equals 方法的键。

或者,如果您使用的是 Java 8,那么它现在有一些内置的东西可以执行此操作,但最好先了解如何自己执行此操作。

达蒙

关于java - 计算数组中某个元素出现的次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32191209/

相关文章:

java - Adapter中startActivityForResult返回时获取onActivityResult

java - 默认的Hibernate(5.2.5) session 级缓存查杀性能是多少?

java - 爵士乐拼写检查将拼写正确的单词显示为拼写错误

java - 通过 Wi-Fi Direct 广播

java - 将 UTC 时间从 MySQL 转换为本地时区

java - 如何访问android中的下载文件夹?

java - 使用 Gson 进行 JSON 解析

javax.ws.rs.NotSupportedException : Could not find message body reader for type: class

java - JBoss AS 7 : Logging to remote host (logstash)

java - Java 中的 0000 年