想象一下你有这种情况:
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优先实现此目标?
答案 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