仓酷云

标题: 了解下JAVA的java中的BitSet [打印本页]

作者: 老尸    时间: 2015-1-18 11:36
标题: 了解下JAVA的java中的BitSet
令人可喜的是java现在已经开源了,所以我想我上述的想法也许有一天会实现,因为java一直都是不断创新的语言,每次创新都会给我们惊喜,这也是我喜欢java的一个原因。
BitSet实践是由“二进制位”组成的一个Vector。假如但愿高效力地保留大批“开-关”信息,就应利用BitSet。它只要从尺寸的角度看才成心义;假如但愿的高效力的会见,那末它的速率会比利用一些固有范例的数组慢一些。
别的,BitSet的最小长度是一个长整数(Long)的长度:64位。这意味着假设我们筹办保留比这更小的数据,如8位数据,那末BitSet就显得华侈了。以是最好创立本人的类,用它包容本人的标记位。
在一个一般的Vector中,随我们到场愈来愈多的元素,汇合也会自我收缩。在某种水平上,BitSet也不破例。也就是说,它偶然会自行扩大,偶然则否则。并且Java的1.0版本仿佛在这方面做得最糟,它的BitSet体现非常差强者意(Java1.1已更正了这个成绩)。上面这个例子展现了BitSet是怎样运作的,同时演示了1.0版本的毛病:
  1. //:Bits.java
  2. //DemonstrationofBitSet
  3. importjava.util.*;
  4. publicclassBits{
  5. publicstaticvoidmain(String[]args){
  6. Randomrand=newRandom();
  7. //TaketheLSBofnextInt():
  8. bytebt=(byte)rand.nextInt();
  9. BitSetbb=newBitSet();
  10. for(inti=7;i>=0;i--)
  11. if(((1<<i)&bt)!=0)
  12. bb.set(i);
  13. else
  14. bb.clear(i);
  15. System.out.println("bytevalue:"+bt);
  16. printBitSet(bb);
  17. shortst=(short)rand.nextInt();
  18. BitSetbs=newBitSet();
  19. for(inti=15;i>=0;i--)
  20. if(((1<<i)&st)!=0)
  21. bs.set(i);
  22. else
  23. bs.clear(i);
  24. System.out.println("shortvalue:"+st);
  25. printBitSet(bs);
  26. intit=rand.nextInt();
  27. BitSetbi=newBitSet();
  28. for(inti=31;i>=0;i--)
  29. if(((1<<i)&it)!=0)
  30. bi.set(i);
  31. else
  32. bi.clear(i);
  33. System.out.println("intvalue:"+it);
  34. printBitSet(bi);
  35. //Testbitsets>=64bits:
  36. BitSetb127=newBitSet();
  37. b127.set(127);
  38. System.out.println("setbit127:"+b127);
  39. BitSetb255=newBitSet(65);
  40. b255.set(255);
  41. System.out.println("setbit255:"+b255);
  42. BitSetb1023=newBitSet(512);
  43. //Withoutthefollowing,anexceptionisthrown
  44. //intheJava1.0implementationofBitSet:
  45. //b1023.set(1023);
  46. b1023.set(1024);
  47. System.out.println("setbit1023:"+b1023);
  48. }
  49. staticvoidprintBitSet(BitSetb){
  50. System.out.println("bits:"+b);
  51. Stringbbits=newString();
  52. for(intj=0;j<b.size();j++)
  53. bbits+=(b.get(j)?"1":"0");
  54. System.out.println("bitpattern:"+bbits);
  55. }
  56. }///:~
复制代码
随机数字天生器用于创立一个随机的byte、short和int。每个城市转换成BitSet内响应的位模子。此时统统都很一般,由于BitSet是64位的,以是它们都不会形成终极尺寸的增年夜。但在Java1.0中,一旦BitSet年夜于64位,就会呈现一些使人困惑不解的举动。假设我们设置一个只比BitSet以后分派存储空间年夜出1的一个位,它可以一般地扩大。但一旦试图在更高的地位设置位,同时不先打仗界限,就会失掉一个末路人的背例。这恰是因为BitSet在Java1.0里不克不及准确扩大酿成的。本例创立了一个512位的BitSet。构建器分派的存储空间是位数的两倍。以是假设设置位1024或更高的位,同时没有先设置位1023,就会在Java1.0里失掉一个背例。但侥幸的是,这个成绩已在Java1.1失掉了更正。以是假如是为Java1.0写代码,请只管制止利用BitSet。
IDE是好。java中的IDE更是百花齐放,你用jbuilder能说jbuilder赶不上vs吗?用eclipse,net网页编程beans也很舒服啊。我就不明白“稍微差一些”那一些是从哪里差来的。
作者: admin    时间: 2015-1-21 10:50
你现在最缺的是实际的工作经验,而不是书本上那些凭空想出来的程序。
作者: 爱飞    时间: 2015-1-21 10:50
应用在电视机、电话、闹钟、烤面包机等家用电器的控制和通信。由于这些智能化家电的市场需求没有预期的高,Sun公司放弃了该项计划。随着1990年代互联网的发展
作者: 山那边是海    时间: 2015-1-30 15:56
J2SE开发桌面应用软件比起 VC,VB,DEPHI这些传统开发语言来说,优势好象并不明显。J2ME对于初学者来说,好象又有点深奥,而且一般开发者很难有开发环境。
作者: 变相怪杰    时间: 2015-2-6 10:50
多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使得程序员不用再为内存管理而担忧。在 Java 1.5 版本中,Java 又引入了泛型编程(Generic Programming)、类型安全的枚举、不定长参数和自动装/拆箱等语言特性。
作者: 愤怒的大鸟    时间: 2015-2-15 22:51
那么我书也看了,程序也做了,别人问我的问题我都能解决了,是不是就成为高手了呢?当然没那么简单,这只是万里长征走完了第一步。不信?那你出去接一个项目,你知道怎么下手吗,你知道怎么设计吗,你知道怎么组织人员进行开发吗?你现在脑子里除了一些散乱的代码之外,可能再没有别的东西了吧!
作者: 蒙在股里    时间: 2015-3-4 10:01
Sun公司看见Oak在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布。Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。
作者: 灵魂腐蚀    时间: 2015-3-11 18:11
是一种由美国SUN计算机公司(Sun Microsystems, Inc.)所研究而成的语言
作者: 莫相离    时间: 2015-3-11 19:25
Java自面世后就非常流行,发展迅速,对C++语言形成了有力冲击。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台
作者: 精灵巫婆    时间: 2015-3-17 08:08
你现在最缺的是实际的工作经验,而不是书本上那些凭空想出来的程序。
作者: 若天明    时间: 2015-3-24 02:34
在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。
作者: 小妖女    时间: 2015-3-30 11:30
吧,现在很流行的Structs就是它的一种实现方式,不过Structs用起来实在是很繁,我们只要学习其精髓即可,我们完全可以设计自己的MVC结构。然后你再研究一下软件Refactoring (重构)和极限XP编程,相信你又会上一个台阶。 做完这些,你不如整理一下你的Java代码,把那些经典的程序和常见的应用整理出来,再精心打造一番,提高其重用性和可扩展性。你再找几个志同道合的朋友成立一个工作室吧
作者: 活着的死人    时间: 2015-4-14 19:00
其实说这种话的人就如当年小日本号称“三个月拿下中国”一样大言不惭。不是Tomjava泼你冷水,你现在只是学到了Java的骨架,却还没有学到Java的精髓。接下来你得研究设计模式了。
作者: 冷月葬花魂    时间: 2015-4-15 08:50
是一种使用者不需花费很多时间学习的语言
作者: 再现理想    时间: 2015-4-15 12:59
如果你学过HTML,那么事情要好办的多,如果没有,那你快去补一补HTML基础吧。其实JSP中的Java语法也不多,它更象一个脚本语言,有点象ASP。
作者: 深爱那片海    时间: 2015-4-21 07:38
如果要向java web方向发展也要吧看看《Java web从入门到精通》学完再到《Struts2.0入门到精通》这样你差不多就把代码给学完了。有兴趣可以看一些设计模块和框架的包等等。
作者: 谁可相欹    时间: 2015-4-27 05:00
我大二,Java也只学了一年,觉得还是看thinking in java好,有能力的话看英文原版(中文版翻的不怎么好),还能提高英文文档阅读能力。
作者: 金色的骷髅    时间: 2015-4-28 11:54
如果要向java web方向发展也要吧看看《Java web从入门到精通》学完再到《Struts2.0入门到精通》这样你差不多就把代码给学完了。有兴趣可以看一些设计模块和框架的包等等。
作者: 因胸联盟    时间: 2015-5-1 13:57
设计模式是高级程序员真正掌握面向对象核心思想的必修课。设计模式并不是一种具体"技术",它讲述的是思想,它不仅仅展示了接口或抽象类在实际案例中的灵活应用和智慧
作者: 若相依    时间: 2015-5-6 08:10
象、泛型编程的特性,广泛应用于企业级Web应用开发和移动应用开发。




欢迎光临 仓酷云 (http://ckuyun.com/) Powered by Discuz! X3.2