import java.util.BitSet;
public class WhichChars{
private BitSet used = new BitSet();
public WhichChars(String str){
for(int i=0;i< str.length();i++)
used.set(str.charAt(i)); // set bit for char
}
public String toString(){
String desc="[";
int size=used.size();
for(int i=0;i< size;i++){
if(used.get(i))
desc+=(char)i;
}
return desc+"]";
}
public static void main(String args[]){
WhichChars w=new WhichChars("How do you do");
System.out.println(w);
}
}
运行结果为: [ Hdouwy]
乍一看,我靠,这运行结果是啥???乱糟糟的,稍微一分析就看明白了,首先这个运行结果是从toString()方法中得来的(别问我为啥,我猜的),接着看toString()方法,这个方法也没啥说的,首先你得知道size是多少吧?size=128,(别问为啥,我猜的),然后回忆一下H的asc2编码是多少,是72吧,那么在for循环内当 i = 72时,used.get( i )就会返回一个true(因为构造函数中的 used.set( H ));到这一切明了了。
验证一下bitset自动增长,在构造函数结束的地方加上 used.set(130);然后去看used.size()的大小,是256,有点浪费空间了。
更详细的用法请看http://blog.csdn.net/feihong247/article/details/7849317