- 浏览: 282670 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
marshan:
服务器可以异步执行
HTML5中的服务器‘推送’技术 -Server-Sent Events -
flex_莫冲:
marshan 写道这个间隔可以由服务器端完成 无伤大雅服务器 ...
HTML5中的服务器‘推送’技术 -Server-Sent Events -
marshan:
这个间隔可以由服务器端完成 无伤大雅
HTML5中的服务器‘推送’技术 -Server-Sent Events -
flex_莫冲:
SSE就是循环执行ajax。SSE还不能自定义循环时间间隔。
HTML5中的服务器‘推送’技术 -Server-Sent Events -
iMaplezhou:
"然后用这个非抽象类的实例来调用方法"。怎 ...
Java抽象类和抽象方法
BitSet实际是由“二进制位”构成的一个Vector。如果希望高效率地保存大量“开-关”信息,就应使用BitSet。它只有从尺寸的角度看才有意义;如果希望的高效率的访问,那么它的速度会比使用一些固有类型的数组慢一些。此外,BitSet的最小长度是一个长整数(Long)的长度:64位。 (1)BitSet类 默认情况下,set 中所有位的初始值都是 false。 每个位 set 都有一个当前大小,也就是该位 set 当前所用空间的位数。注意,这个大小与位 set 的实现有关,所以它可能随实现的不同而更改。位 set 的长度与位 set 的逻辑长度有关,并且是与实现无关而定义的。 除非另行说明,否则将 null 参数传递给 BitSet 中的任何方法都将导致 NullPointerException。 在没有外部同步的情况下,多个线程操作一个 BitSet 是不安全的。
大小可动态改变, 取值为true或false的位集合。用于表示一组布尔标志。
此类实现了一个按需增长的位向量。位 set 的每个组件都有一个 boolean 值。用非负的整数将 BitSet 的位编入索引。可以对每个编入索引的位进行测试、设置或者清除。通过逻辑与、逻辑或和逻辑异或操作,可以使用一个 BitSet 修改另一个 BitSet 的内容。
(2) 构造函数:
BitSet() or BitSet(int nbits)
(3) 一些方法
public void set(int pos): 位置pos的字位设置为true。
public void set(int bitIndex, boolean value) 将指定索引处的位设置为指定的值。
public void clear(int pos): 位置pos的字位设置为false。
public void clear() : 将此 BitSet 中的所有位设置为 false。
public int cardinality() 返回此 BitSet 中设置为 true 的位数。
public boolean get(int pos): 返回位置是pos的字位值。
public void and(BitSet other): other同该字位集进行与操作,结果作为该字位集的新值。
public void or(BitSet other): other同该字位集进行或操作,结果作为该字位集的新值。
public void xor(BitSet other): other同该字位集进行异或操作,结果作为该字位集的新值。
public void andNot(BitSet set) 清除此 BitSet 中所有的位,set - 用来屏蔽此 BitSet 的 BitSet
public int size(): 返回此 BitSet 表示位值时实际使用空间的位数。
public int length() 返回此 BitSet 的“逻辑大小”:BitSet 中最高设置位的索引加 1。
public int hashCode(): 返回该集合Hash 码, 这个码同集合中的字位值有关。
public boolean equals(Object other): 如果other中的字位同集合中的字位相同,返回true。
public Object clone() 克隆此 BitSet,生成一个与之相等的新 BitSet。
public String toString() 返回此位 set 的字符串表示形式。
(4)例子
例1:标明一个字符串中用了哪些字符 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); } } 运行: C:\work>java WhichChars [ Hdouwy]
例2:筛选法求素数 import java.util.*; public class BitSetTest{ public static void main(String[] args){ BitSet sieve=new BitSet(1024); int size=sieve.size(); for(int i=2;i< size;i++) sieve.set(i); int finalBit=(int)Math.sqrt(sieve.size()); for(int i=2;i< finalBit;i++) if(sieve.get(i)) for(int j=2*i;j< size;j+=i) sieve.clear(j); int counter=0; for(int i=1;i< size;i++){ if(sieve.get(i)){ System.out.printf("%5d",i); if(++counter%15==0) System.out.println(); } } } } C:\work>java BitSetTest 2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97 101 103 107 109 113 127 131 137 139 149 151 157 163 167 173 179 181 191 193 197 199 211 223 227 229 233 239 241 251 257 263 269 271 277 281 283 293 307 311 313 317 331 337 347 349 353 359 367 373 379 383 389 397 401 409 419 421 431 433 439 443 449 457 461 463 467 479 487 491 499 503 509 521 523 541 547 557 563 569 571 577 587 593 599 601 607 613 617 619 631 641 643 647 653 659 661 673 677 683 691 701 709 719 727 733 739 743 751 757 761 769 773 787 797 809 811 821 823 827 829 839 853 857 859 863 877 881 883 887 907 911 919 929 937 941 947 953 967 971 977 983 991 997 1009 1013 1019 1021
例3:简单使用1 import java.util.BitSet; public class BitOHoney { public static void main(String args[]) { String names[] = { "Java", "Source", "and", "Support"}; BitSet bits = new BitSet(); for (int i = 0, n = names.length; i < n; i++) { if ((names[i].length() % 2) == 0) { bits.set(i); } } System.out.println(bits); System.out.println("Size : " + bits.size()); System.out.println("Length: " + bits.length()); for (int i = 0, n = names.length; i < n; i++) { if (!bits.get(i)) { System.out.println(names[i] + " is odd"); } } BitSet bites = new BitSet(); bites.set(0); bites.set(1); bites.set(2); bites.set(3); bites.andNot(bits); System.out.println(bites); } } 运行: C:\work>java BitOHoney {0, 1} Size : 64 Length: 2 and is odd Support is odd {2, 3}
例4:简单使用2 import java.util.*; public class HolidaySked{ BitSet sked; public HolidaySked(){ sked = new BitSet(365); int[] holiday = {1,15,50,148,185,246,281,316,326,359}; for(int i = 0;i<holiday.length;i++){ addHoliday(holiday[i]); } } public void addHoliday(int dayToAdd){ sked.set(dayToAdd); } public boolean isHoliday(int dayToCheck){ boolean result = sked.get(dayToCheck); return result; } public static void main(String[] arguments){ HolidaySked cal = new HolidaySked(); if(arguments.length>0){ try{ int whichDay = Integer.parseInt(arguments[0]); if(cal.isHoliday(whichDay)){ System.out.println("Day number "+ whichDay + " is a holiday."); }else{ System.out.println("Day number "+ whichDay + " is not a holiday."); } }catch(NumberFormatException nfe){ System.out.println("Error: " + nfe.getMessage()); } } } } 上例通过sked.set(dayToAdd) 来设置相应位置为1。再通过sked.get(dayToCheck)来读取相应值。这样,就很方便的完成了一系列位的置1。
发表评论
-
【转】java 命令行引用jar包的方法 的整理
2011-09-22 22:20 7413http://hi.baidu.com/jlike/ ... -
【笔试】两个大数相乘
2011-09-16 14:09 2175package com.baidu.ecom; ... -
【面试】当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法?
2011-09-15 11:18 4281问题:当一个线程进入一个对象的一个synchronized方法 ... -
System.err与System.out的区别【zhuan】
2011-08-17 15:38 2034System.err与System.out的区别 今天 ... -
Thinking in java 的附录E——关于java垃圾回收
2011-08-17 14:54 1502附录E 关于垃圾收集的 ... -
java foreach语法
2011-08-17 11:45 1708java的foreach可以遍历数组和所有的Collecti ... -
java 嵌套接口
2011-08-11 20:20 1478接口可以嵌套在类 或者 其他接口中。 当实现某 ... -
什么是HotSpot【转自网易博客】
2011-08-10 14:47 1274什么是HotSpot 链接:h ... -
HotSpot虚拟机对象探秘[转自infoQ]
2011-08-10 14:37 1274HotSpot虚拟机对象探秘 ... -
java操作符重载?
2011-08-06 18:04 1367+ 和+= 被重载来处理String对象 -
java静态导入--导入你需要的静态成员
2011-08-03 23:14 1181java静态导入--导入你需要的静态成员 在Java ... -
Java内存模型中的三个代简介
2011-07-28 21:20 2009Java内 ... -
【面试】Map放进去重复key-value对
2011-07-20 21:54 3699import java.util.ArrayList; ... -
javap查看class文件
2011-06-09 22:26 3028javap JDK自带的反汇编器,可以查看java编译器为我 ... -
Java序列化之高级认识
2011-06-09 21:32 1337Java序列化之高级认识 将 Java 对象序列化为二进制文 ... -
JAVA字符编码系列二:Unicode,ISO-8859,GBK,UTF-8编码及相互转换
2011-05-09 11:25 1567JAVA字符编码系列二:Unicode,ISO-8859,GB ... -
【面试】BigInteger的部分实现【转】
2011-05-02 09:25 7719期中考试题2:BigInteger的部分实现 Java中lon ...
相关推荐
虽然`Date`类在早期版本的Java中存在很多过时的方法,但在JDK 1.1之后引入了`Calendar`类来改善日期和时间的处理。 - `Calendar`类:是一个抽象类,提供了更灵活的日期和时间操作。它支持不同日历系统(如公历、...
13.16.3 用Java 1.1 AWT制作窗口和程序片 13.16.4 再探早期示例 13.16.5 动态绑定事件 13.16.6 将商业逻辑与UI逻辑区分开 13.16.7 推荐编码方法 13.17 Java 1.1 UI API 13.17.1 桌面颜色 13.17.2 打印 13.17.3 剪贴...
13.16.3 用Java 1.1 AWT制作窗口和程序片 13.16.4 再探早期示例 13.16.5 动态绑定事件 13.16.6 将商业逻辑与UI逻辑区分开 13.16.7 推荐编码方法 13.17 Java 1.1 UI API 13.17.1 桌面颜色 13.17.2 打印 13.17.3 剪贴...
13.16.3 用Java 1.1 AWT制作窗口和程序片 13.16.4 再探早期示例 13.16.5 动态绑定事件 13.16.6 将商业逻辑与UI逻辑区分开 13.16.7 推荐编码方法 13.17 Java 1.1 UI API 13.17.1 桌面颜色 13.17.2 打印 13.17.3 剪贴...
13.16.3 用Java 1.1 AWT制作窗口和程序片 13.16.4 再探早期示例 13.16.5 动态绑定事件 13.16.6 将商业逻辑与UI逻辑区分开 13.16.7 推荐编码方法 13.17 Java 1.1 UI API 13.17.1 桌面颜色 13.17.2 打印 13.17.3 剪贴...
13.16.3 用Java 1.1 AWT制作窗口和程序片 13.16.4 再探早期示例 13.16.5 动态绑定事件 13.16.6 将商业逻辑与UI逻辑区分开 13.16.7 推荐编码方法 13.17 Java 1.1 UI API 13.17.1 桌面颜色 13.17.2 打印 13.17.3 剪贴...
13.16.3 用Java 1.1 AWT制作窗口和程序片 13.16.4 再探早期示例 13.16.5 动态绑定事件 13.16.6 将商业逻辑与UI逻辑区分开 13.16.7 推荐编码方法 13.17 Java 1.1 UI API 13.17.1 桌面颜色 13.17.2 打印 13.17.3 剪贴...
13.16.3 用Java 1.1 AWT制作窗口和程序片 13.16.4 再探早期示例 13.16.5 动态绑定事件 13.16.6 将商业逻辑与UI逻辑区分开 13.16.7 推荐编码方法 13.17 Java 1.1 UI API 13.17.1 桌面颜色 13.17.2 打印 13.17...
13.16.3 用Java 1.1 AWT制作窗口和程序片 13.16.4 再探早期示例 13.16.5 动态绑定事件 13.16.6 将商业逻辑与UI逻辑区分开 13.16.7 推荐编码方法 13.17 Java 1.1 UI API 13.17.1 桌面颜色 13.17.2 打印 13.17.3 剪贴...
- **环境搭建**:介绍了如何设置开发环境,包括安装Java开发工具包(JDK)。 - **第一个Java程序**:通过一个简单的“Hello World”程序来演示Java程序的基本结构和语法。 #### 1.2 Java学习目标 - 明确了学习Java...
13.16.3 用Java 1.1 AWT制作窗口和程序片 13.16.4 再探早期示例 13.16.5 动态绑定事件 13.16.6 将商业逻辑与UI逻辑区分开 13.16.7 推荐编码方法 13.17 Java 1.1 UI API 13.17.1 桌面颜色 13.17.2 打印 13.17.3 剪贴...
13.16.3 用Java 1.1 AWT制作窗口和程序片 13.16.4 再探早期示例 13.16.5 动态绑定事件 13.16.6 将商业逻辑与UI逻辑区分开 13.16.7 推荐编码方法 13.17 Java 1.1 UI API 13.17.1 桌面颜色 13.17.2 打印 13.17.3 剪贴...