簡體   English   中英

在循環中創建的對象的遞增頻率

[英]increment frequency of objects created in a loop

我正在嘗試使用一些通過解析文件生成的字符串來創建對象,並且每次字符串再次出現在文件中時,我都需要增加對象的頻率

for (int i = 0; i < chars.length - (k-1); i++) {                        
String s = "";
for(int j = i; j < i + k; j ++ ){
    s += chars[j];                  
}
if(!s.contains("N")){
    TreeObject obj = new TreeObject(s, 4);
    if(lines.contains(s)){
        obj.incrementFrequency();
        System.out.println("duplicate detected " + s + "\n");
    }
    else {
        lines.add(s);                                   
    }

線是一組

Set<String> lines = new TreeSet<>();

我想不出一種方法來做..由於數據可能非常龐大,我認為使用數組將不是一個好方法。

有任何想法嗎 ?

使用Map

Map<String, Integer> frequencies = new HashMap<>();

然后,每次從解析中獲取新的字符串s時:

frequencies.put(s, frequencies.getOrDefault(s, 0) + 1);

這將檢查frequencies是否已存在帶有鍵s的條目,如果存在,則將其值加1。 否則,它只會將鍵為s且值為1的新條目放入frequencies

如果您無權使用Java 8,則解決方案不太優雅:

Integer previous = frequencies.get(s);
frequencies.put(s, previous == null ? 1 : previous + 1);

暫無
暫無

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

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