2016-08-20 27 views
0

我寫了下面的代碼,並得到了輸出。 import java.util.ArrayList;如何在ArrayList中出現單詞的次數?

public class DuplicatesinArrayList { 

    public static void main(String[] args) { 

     ArrayList <String> al = new ArrayList<>(); 
     al.add("Soumen"); 
     al.add("Rahul"); 
     al.add("Soumen"); 
     al.add("Ram"); 
     al.add("Rahul"); 
     al.add("Rahul"); 
     al.add("Rahul"); 
     al.add("Ram"); 
     al.add("Ram"); 
     al.add("Ram"); 
     al.add("Ram"); 

     for (int i = 0; i < al.size(); i++) { 
      int ctr = 0; 
      for (int j = 0; j < al.size(); j++) { 
       if(al.get(i).equals(al.get(j))) 
        ctr++; 
      } 
      System.out.println(al.get(i)+" present " + ctr + " times"); 
     } 
    } 
} 

結果如下:

Soumen present 2 times 
Rahul present 4 times 
Soumen present 2 times 
Ram present 5 times 
Rahul present 4 times 
Rahul present 4 times 
Rahul present 4 times 
Ram present 5 times 
Ram present 5 times 
Ram present 5 times 
Ram present 5 times 

我想每個字應該有一個結果。誰能幫忙?

+0

使用地圖或番石榴多集。 – 2016-08-20 18:58:29

+0

嗨遙控,請你給我以前提出的問題,以便我可以找到答案。 –

+0

我不想使用Map.Without使用Map我怎樣才能達到預期的效果 –

回答

2

您可以使用地圖爲

Map<String, Integer> map = new HashMap<>(); 
for (String s : al) { 
    if (map.containsKey(s)) map.put(s, map.get(s) + 1); 
    else map.put(s, 1); 
} 

for (Map.Entry<String, Integer> entry : map.entrySet()) { 
    System.out.println(entry.getKey()+" present " + entry.getValue() + " times"); 
} 

或者您可以使用java8流:

al.stream().collect(groupingBy(o -> o, counting())).forEach((name, count) -> System.out.println(name + " present " + count + " times")); 
+0

你有沒有使用任何解決方案地圖? –

相關問題