使用java进行说明,下面的代码会删除以前的temp实例吗?或者它会在内存中保留一段时间,直到垃圾回收处理它。
String[] words = {"one", "two" ,"three", "four", "five"};
for(String s: words){
// writing over temp each time
HashSet<Character> temp = new HashSet<Character>();
for(Character c : s.toCharArray()){
temp.add(c);
}
// do some computation with temp, afterwhich is no longer needed.
}
在我的脑海中,我在想,一旦临时文件被写下来,它几乎会立即被删除,这会使它变得高效。我说得对吗?
如果没有,是否有一种更节省空间的方法来制作临时数据结构?
我知道不同的语言有不同的垃圾收集实现,所以我想主要了解java,但是如果有一个适用于所有语言的通用规则,那将是一个很好的
---编辑---
下面的代码不正确。但正如其他人所评论的那样,你可以使用BitSet
如果你只是在谈论a和z之间的字符,那么最有效的方法就是使用位掩码,比如
public class CharBitMask {
private int mask;
public void add (char c) {
mask = mask | (1 ^ ('a' - c));
}
public boolean contains (char c) {
return mask & (1 ^ ('a' - c)) == 1;
}
}