我正在尝试使用通过解析文件生成的一些字符串来创建对象 每次字符串再次出现在文件中时,我需要增加对象的频率
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);
}
其中lines是Set
Set<String> lines = new TreeSet<>();
我无法想到这样做的方法..由于数据可能很大,我认为使用数组不是一个好方法......
有什么想法吗?
答案 0 :(得分:2)
使用Map
:
Map<String, Integer> frequencies = new HashMap<>();
然后每次从解析中获得新的字符串s
:
frequencies.put(s, frequencies.getOrDefault(s, 0) + 1);
这将检查s
中是否已存在键frequencies
的条目,如果已存在,则将其值加1。否则,它只会将带有键s
和值1的新条目放入frequencies
。
如果您无法访问Java 8,那么解决方案就不那么优雅了:
Integer previous = frequencies.get(s);
frequencies.put(s, previous == null ? 1 : previous + 1);