2015-01-09 14 views
1

特定的詞想象一下,你有這樣的情況:計數上的ArrayList <String>

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?

回答

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如預期,但由博胡斯拉夫瑞光提到的解決方案將返回2

+0

我的話測試和你是絕對正確的。謝謝 – Goldbones 2015-01-09 19:43:58

相關問題