【java-将BitSet存储在App Engine中】教程文章相关的互联网学习教程文章

深度剖析Java集合之BitSet【代码】【图】

BitSet BitSet类实现了一个按需增长的位向量,实际是由“二进制位”构成的一个Vector。每一位都是一个表示true或者false 的boolean 值。如果我们希望高效地存储这样只有两种类型的数据,就可以使用BitSet。 首先需要说明的是,BitSet并不属于集合框架,没有实现List或Map或者Set接口,BitSet更多的表示一种开关信息,对于海量不重复数据,利用索引表示数据的方式,将会大大节省空间使用。位图 vector of bits也就是位图,由于可以用...

Java手动实现布隆过滤器(BitSet)

1.首先我们需要: 一个合适大小的位数组保存数据 BitSet几个不同的哈希函数 通过随机种子seed定制不同的hash函数添加元素到位数组(布隆过滤器)的方法实现 add方法判断给定元素是否存在于位数组(布隆过滤器)的方法实现。 contains方法 2.其次我们需验证布隆过滤器,判正可能出错的这一点,在代码中进行了实现 详情见注释:import java.util.BitSet;/*** 布隆过滤器:用BitSet实现,建议先了解Bit...

如何简化BitSet [JAVA]【代码】

我使用BitSet表示可能要补课的时间,情况是,当您将角位设为假时,它们将被简化,这意味着它们不再存在于BitSet中.我如何要求BitSet不简化? 为了使我的解释更清楚,这是代码:for(Map.Entry<GrupAssig, BitSet> entry : bitsetPerGrup.entrySet()){BitSet bitset = entry.getValue();//n franges per diaint numFranges = UnitatDocent.getNumFranges();int indexDia = this.dia.id() * numFranges;bitset.clear(indexDia, indexDia+nu...

带有尾随零的Java BitSet【代码】

对于以0结尾的位表示,我该如何使用BitSet? 例如,为了在BitSet中表示“ 10100”,我正在执行以下操作.BitSet bits = new BitSet(5); bits.set(0); bits.set(2);基于Java文档,length() – Returns the “logical size” of this BitSet: the index of the highest set bit in the BitSet plus one. size() – Returns the number of bits of space actually in use by this BitSet to represent bit values.因此,对于给定的示例,由于...

java-将BitSet存储在App Engine中

在App引擎中存储BitSet的最佳方法是什么?它们不允许将java.util.BitSet用作属性.解决方法:BitSet是可序列化的.数据存储区可以获取/放置可序列化的just fine.

Java(BitSet.class)中的OR操作【代码】

如何编写一个程序,将001010101110000100100 ….,011100010001000011000 ….,000000000010000000000100 ….作为输入(位),输出将是这3个的OR.OR = 0 0 = 0,0 1 = 1,1 0 = 1,1 1 = 1,如果某人有一个示例程序也将有所帮助.我们是否需要将值从字节存储到位数组中?解决方法:这应该可以工作(更新:已修复错误):public static BitSet or(final String... args){final BitSet temp = createBitset(args[0]);for(int i = 1; i < args.lengt...

Java BitSet,可轻松串联BitSet

我需要一个BitSet,它可以轻松地将多个BitSet串联起来以创建一个新的BitSet. default implementation没有这种方法. 你们中任何人都知道某个外部库中有任何实现可以轻松串联的实现吗? 例如,假设我有一个位数组11111和另一个位数组010101.我想要附加功能.因此,连接后将得到11111010101.解决方法:好吧,因为没有左移方法,所以无法实现这种极其有效的性能(即性能和内存). 您可以使用明显的nextSetBit进行循环-速度慢,但内存效率高. 大概...

java – 检查BitSet中的所有位是否都设置为true

我在我的应用程序中使用BitSet,并希望检查一个方法,如果BitSet中的所有使用位都设置为true.现在,我知道方法isEmpty()检查是否所有位都设置为false,但我似乎无法找到正面情况.我知道我可以做像someBitSet.cardinality()== someBitSet.size()这样的事情,但这看起来很笨拙.我错过了什么,或者是否有明确的理由说明为什么没有实施这样的方法,但情况恰恰相反?解决方法:没有像“BitSet中的所有位”那样的东西,因为在任何时候你都可以设置...

从Java BitSet中随机选取n个k位

如何从长度为m的Java BitSet中精确选取k位,n位打开,其中k≤n≤m? 输入示例:m = 20,n = 11 输出示例:k = 3 天真的做法 选择一个随机数0≤i≤m-1.如果它在输入上打开而未在输出上打开,则在输出中将其打开,直到输出中的k位打开. 当n远小于m时,这种方法失败.还有其他想法吗?解决方法:您可以从第一位扫描到最后一位,并将reservoir sampling应用于设置的位. 该算法具有O(m)时间复杂度,并且需要O(k)存储器.

什么是Java的BitSet的C#等价物?【代码】

我的要求很简单: >能够定义位数组的维数,即:5个字节.> bool Get(bitIndex:int)> Set(bitIndex:int) 是否有一个c#等价物,它提供与Java中的BitSet类似的功能? 这是场景: >初始化5个字节,所有位都为0(假).>将字节3,位8设置为TRUE.>获取字节3的位8,位8. 更新:Michael Bray的解决方案:static void Main(string[] args) { // Set for 5 bytes BitArray ba = new BitArray(8 * 5); // Set bit #1 on byte #4 ba.Set(GetBitNum(4,...

为什么你会在java中使用BitSet而不是布尔数组(在Java中)?

除了可用方法的不同之外,为什么有人会使用BitSet而不是布尔数组呢?某些操作的性能是否更好?解决方法:您可以这样做以节省空间:布尔值占用整个字节,因此N个布尔值的数组将占用具有相同条目数的BitSet空间的八倍. 执行速度是另一个密切相关的问题:您可以更快地生成一个联合或多个BitSet对象的交集,因为这些操作可以由CPU按位32位进行按位AND和OR执行.

调整java BitSet的大小【代码】

我对BitSet类进行了分类,以添加一些其他方法.其中一个被称为“折叠”.它将BitSet分成两半并将它们与一个或“组合”.(增加信息密度) 这可以工作,但折叠的BitSet的大小(1024)仍然是原始大小. 码:BitSet firstHalf;BitSet secondHalf;for(int i = nrOfTimes; i > 0; i-- ){firstHalf = this.get(0, this.size()/2);secondHalf = this.get(this.size()/2, this.size());firstHalf.or(secondHalf);this.clear();this.or(firstHalf);}返...

java – BitSet向后显示值?【代码】

我已经设置了以下使用Java运行的代码:BitSet bitSet = BitSet.valueOf(new byte[] { (byte)15 }); System.out.println(bitSet);令我惊讶的打印{0, 1, 2, 3} //the indexes of the 1's in the bitset代替{ 4, 5, 6, 7 }.如果我没有弄错的话,15 in 2的补码写成00001111(带1个字节). 这让我想知道为什么BitSet会向后显示索引.有没有合理的解释?解决方法:引用BitSet的Java标准:Returns a string representation of this bit set. Fo...

如何将整数的二进制表达式输入到java中的bitSet中【代码】

如何在java中的bitSet中输入整数的二进制表达式? 说a = 15我想把1111放入bitSet, 有这个功能吗?解决方法:BitSet有一个静态的valueOf(long[])方法Returns a new bit set containing all the bits in the given long array. 因此,一个长的数组将具有64位,具有两个长的数组将具有128位等. 如果您只需要从单个int值获取BitSet,请像这样使用它Integer value = 42; System.out.println(Integer.toBinaryString(value)); BitSet bitSet ...

Java BitSet使用场景和示例【代码】

一、什么是BitSet?注:以下内容来自JDK API:BitSet类实现了一个按需增长的位向量。位Set的每一个组件都有一个boolean值。用非负的整数将BitSet的位编入索引。可以对每个编入索引的位进行测试、设置或者清除。通过逻辑与、逻辑或和逻辑异或操作,可以使用一个 BitSet修改另一个 BitSet的内容。 默认情况下,set 中所有位的初始值都是false。 每个位 set 都有一个当前大小,也就是该位 set 当前所用空间的位数。注意,这个大小与位 ...