摘要:接着上一篇Blog:一道面试题与Java位操作 和 BitSet 库的使用,分析下Java源码中BitSet类的源码。 位图(Bitmap),即位(Bit)的集合,是一种常用的数据结构,可用于记录大量的0-1状态,在很多地方都会用到,比如Linux内核(如inode,磁盘块)、Bloom Filter算法等,其优势是可以在一个非常高的空间利用率下保存大量0-1状态。在Java中,直接面向程序员的最小数据操作粒度是byte,并不提供能够直接操作某个bit的途径,但是程序员可以通过使用位运算符(& | ~ > 等等)自己封装位操作。如果不想自己动手,可以使用Java内置的BitSet 阅读全文
一道面试题与Java位操作 和 BitSet 库的使用
2014-04-05 22:41 by yellowb, 2868 阅读, 1 推荐, 收藏, 编辑
摘要:前一段时间在网上看到这样一道面试题:有个老的手机短信程序,由于当时的手机CPU,内存都很烂。所以这个短信程序只能记住256条短信,多了就删了。每个短信有个唯一的ID,在0到255之间。当然用户可能自己删短信.现在要求设计实现一个功能: 当收到了一个新短信啥,如果手机短信容量还没"用完"(用完即已经存储256条),请分配给它一个可用的ID。由于手机很破,我要求你的程序尽量快,并少用内存.1.审题 通读一遍题目,可以大概知道题目并不需要我们实现手机短信内容的存储,也就是不用管短信内容以什么形式存、存在哪里等问题。需要关心的地方应该是如何快速找到还没被占用的ID(0 ~ 255) 阅读全文