[英]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
類。完成搜索后(或保持運行計數))
為什么不建立一個最大堆,每個節點中都有String
和integer_occurrence
? 要獲得最常用的單詞,請獲取堆的根
您可能要考慮在數據庫中使用字典。 因為通常必須將此類數據保留在物理介質中,以防止系統重新啟動后丟失。 在這種情況下,字典是有幫助的。 您只需要做的就是建立字典表和其他表來存儲頻率和位置等信息。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.