在ArrayList <string> </string>上计算特定字数

时间:2015-01-09 18:15:55

标签: java

想象一下你有这种情况:

List<String> al = new ArrayList<>();
    al.add("[I] am");
    al.add("you are");
    al.add("I");
    al.add("[I] like java");

现在我要计算序列[I](在这种情况下,它将计数2次)。链接How to count the number of occurrences of an element in a List只是一个字,但在我的例子中我有不止一个,即Collections.frequency(al,“[I]”)不起作用。

如何使用Java 8优先实现此目标?

1 个答案:

答案 0 :(得分:4)

另一种方法是按空格分割流,然后检查块是否等于[I],例如

System.out.println(al.stream().map((w) -> w.split(" ")).flatMap(Arrays::stream).filter((i) ->i.equals("[I]")).count());

使用equals优于包含,因为请说明您的列表包含以下字词

List<String> al = new ArrayList<>();
        al.add("[I] am [I]");
        al.add("you are");
        al.add("I");
        al.add("[I] like java");

此解决方案将按预期返回3,但Bohuslav Burghardt提到的解决方案将返回2