2016-02-26 42 views
-1

在這個程序中,我將列出將通過system.out.print()方法(例如system)打印的名稱。的out.print(「喬」)正在採取的具體行動之後。如何打印最常出現的system.out.print(「」)

例如,我的輸出將

Joe, Ben, Ben, Tom, Ben, Joe, Tom, Tom, Joe, Tom 

現在我需要使用Java辦理名稱的打印清單找出路並收集最常見的一個,理想情況下它會在完成計算後打印這樣的東西。

The most common name was: Tom 

我想過如何創建int計數器,每次打印名稱時都會增加++,但我不知道如何繼續使用這種解決方案。這可能相當不方便,所以我感謝你的時間!

+1

您可以將名稱映射到出現次數。 – ChiefTwoPencils

+1

你可以使用HashMap – tianwei

回答

1

您可以使用HashMap。聲明如下。

HashMap<String, Integer> hm = new HashMap<>(); 

要將名稱存儲爲每個名稱的鍵和計數器,請使用類似這樣的方法。

public HashMap<String, Integer> incrementCountForName(HashMap<String, Integer> hm, String name) { 
      if (hm.containsKey(name)) { 
       int count = hm.get(name); 
       hm.put(name, count + 1); 
      } else { 
       hm.put(name, 1); 
      } 
      return hm; 
     } 

爲了找到地圖的最大值,你可以看看here。有很多商品解決方案。

1

兩種方式我能想到的:

  1. 創建映射/字典,用名字作爲一個關鍵和計數外觀每個名字的數量,以最大計數器的一個
  2. 排序的名稱列表,循環排序的列表,並增加相同的組名的計數器,計數器復位時遇到一個新的名字,同時與最大計數

兩種方法給出類似的複雜性名稱記錄下來

+0

我不知道它是否改變了一些東西,但是打印的名字不是來自數組,而只是一個正常的if(condition){print「joe」}方式。我還能排序嗎? –

+0

可以說,你可以將它們存儲在數組中嗎? if(condition){print「joe」;在數組}中存儲「joe」?或者你的名單會動態變化,你永遠不知道何時會發生「狀況」?然後,您可以使用方法1:使用映射/字典並在「條件」發生時插入名稱,然後查詢最大計數的值 – shole

+1

好的,謝謝,如果我可以選擇兩個,我會打勾你的答案! :( –