![](/img/trans.png)
[英]Java: I've created a list of word objects to include the name and the frequency, but having trouble updating the frequency
[英]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.