簡體   English   中英

Java-最適合查找最頻繁元素的數據結構

[英]Java - Most suitable data structure for finding the most frequent element

我的程序包含輸出文本(字符串)的算法。 最終,我想打印出出現次數最多的單詞。 但是在執行此操作之前,我需要將其存儲在數據結構中。 所以我想知道哪種數據結構是最好的(簡單而有效的)存儲字符串,然后能夠獲得最頻繁的元素? 我不想使用任何庫。 謝謝

我不認為任何數據結構都能做到這一點,但是我將按照以下方式進行操作。

保持每個單詞的Map<String, Integer>到遇到該單詞的次數,並在更新地圖時跟蹤與存儲的最大數字相對應的字符串。 例如:

String maxWord = null;
Integer maxCount = -1;
Map<String, Integer> wordCount = new HashMap<String, Integer>();
for (String str : getMyProgramOutput()) {
  if (!wordCount.containsKey(str)) { wordCount.put(str, 0); }
  int count = wordCount.get(str) + 1;
  if (count > maxCount) {
    maxWord = str;
    maxCount = count;
  }
  wordCount.put(str, count);
}

創建一個Map<String, Integer> 每次您輸入String增量時,都會使用Integer (您可能必須創建自己的MutableInteger類。完成搜索后(或保持運行計數))

為什么不建立一個最大堆,每個節點中都有Stringinteger_occurrence 要獲得最常用的單詞,請獲取堆的根

您可能要考慮在數據庫中使用字典。 因為通常必須將此類數據保留在物理介質中,以防止系統重新啟動后丟失。 在這種情況下,字典是有幫助的。 您只需要做的就是建立字典表和其他表來存儲頻率和位置等信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM