`

bitset和lambda表达式

    博客分类:
  • java
 
阅读更多

今天看了下lambda表达式,突然想看一下list中removeif的源码,发现挺有意思的

首先说一下BitSet这个类,这个类按照jdk里面说的是一个按需增长的位向量,没一个位置都是一个boolean值,我自己的理解就是一个很容易扩大的数组,每个数组的位置,都是一个boolean值,每个默认值为false

 

好,这会来看一下removif的源码,前提得先明白lambda表达式,removeif方法是传递了一个Predicate接口的参数


 首先定义一个removeset的bitset,长度为当前数组的长度,然后遍历当前数组,利用传递的参数filter来判定是否需要执行remove操作,如果需要,则将当前的bitset位置为true,removeCount加1,


同样,首先遍历list,这个地方特意定义了两个下标,nextClearBit(i)以当前坐标为基数返回第一个设置为false的下标,包含当前坐标,也就是说找出第一个未设置需要删除的坐标,并且把他放入j位置

这种循环条件是将所有不需要移除的元素统统前移,然后利用newSize位置,将后面的元素全部删除掉

这种思想很有意思,利用了bitset类的一些思想,同样bitset也提供了一个nextSetBit方法,是返回第一个设置为true的下标

 

 

  • 大小: 58.5 KB
  • 大小: 50.5 KB
分享到:
评论

相关推荐

    写给大忙人看的JAVA SE 8

    3.9 lambda表达式和泛型 63 3.10 一元操作 65 练习 67 第4章 JavaFX 72 4.1 Java GUI编程简史 74 4.2 你好,JavaFX! 75 4.3 事件处理 76 4.4 JavaFX属性 77 4.5 绑定 80 4.6 布局 85 4.7 FXML 91 4.8 CSS 95 4.9 ...

    bitset用法 bitset用法

    bitset用法bitset用法bitset用法bitset用法bitset用法bitset用法

    C语言头文件 BITSET

    C语言头文件 BITSETC语言头文件 BITSETC语言头文件 BITSETC语言头文件 BITSETC语言头文件 BITSETC语言头文件 BITSETC语言头文件 BITSETC语言头文件 BITSETC语言头文件 BITSETC语言头文件 BITSETC语言头文件 BITSETC...

    动态Bitset源代码

    本资源附件中实现了一个动态Bitset,和标准bitset兼容。 /** @defgroup Bitset Bitset位集类 * @{ */ //根据std::bitset改写,函数意义和std::bitset保持一致 class CORE_API Bitset: public Serializable { ...

    acm相关资料vector、bitset

    acm相关资料vector、bitset、大数乘法等等

    可以动态扩展的bitset

    文档模仿STL库的BITSET写的一个bitset,但是和STL不同的是这个类是一个可以动态扩展的,使用方法和STL的类似,可以参考STL使用

    基于C++ bitset常用函数及运算符(详解)

    bitset中的每个元素都能单独被访问,例如对于一个叫做foo的bitset,表达式foo[3]访问了它的第4个元素,就像数组一样。 bitset有一个特性:整数类型和布尔数组都能转化成bitset。 bitset的大小在编译时就需要确定。...

    Go-bitset-Go包实现bitsets

    bitset - Go包实现 bitsets

    BitSet 源码分析.txt

    基于JDK1.8的BitSet 源码分析, 描述了实现的原理 个方法的含义 虽然没有写出实际的测试代码 但是只要是细度了我的这个分析 在使用的时候就不是问题了

    c++ bitset实现

    自己实现的bitset数据结构,在vs2005下编译通过。有测试成素。

    详解C++ bitset用法

    C++的 bitset 在 bitset 头文件中,它是一种类似数组的结构,它的每一个元素只能是0或1,每个元素仅用1bit空间。 下面是具体用法 构造函数 bitset常用构造函数有四种,如下 bitset<4> bitset1; //无参构造,...

    Java编程中的HashSet和BitSet详解

    主要介绍了Java编程中的HashSet和BitSet详解的相关资料,需要的朋友可以参考下

    认识C++中的bitset类型

    和vector对象不一样的是bitset类型对象的区别仅在其长度而不在其类型。在定义bitset的时候,要明确bitset包含了多少位,须在尖括号内给出它的长度值。长度值必须定义为整形字面值常量或是已用常量值初始化的整型的...

    c++遗传算法,用bitset实现

    使用C++编写的遗传算法,代码量200行左右,供大家学习研究,互相交流。

    C++下bitset简介

    C++下的bitset,强大而简单的位运算功能,象使用数组一样对位进行操作

    C++ Primer中文版(第5版)李普曼 等著 pdf 1/3

     2.4.4 constexpr和常量表达式 58  2.5 处理类型 60  2.5.1 类型别名 60  2.5.2 auto类型说明符 61  2.5.3 decltype类型指示符 62  2.6 自定义数据结构 64  2.6.1 定义Sales_data类型 64  2.6.2 使用Sales_...

    C++Primer(第5版 )中文版(美)李普曼等著.part2.rar

     2.4.4 constexpr和常量表达式 58  2.5 处理类型 60  2.5.1 类型别名 60  2.5.2 auto类型说明符 61  2.5.3 decltype类型指示符 62  2.6 自定义数据结构 64  2.6.1 定义Sales_data类型 64  2.6.2 使用Sales_...

    bitset:紧凑的位集实现

    还有一种解析方法,该方法允许从零和一的字符串构造BitSet。 例子 package main import ( "fmt" "github.com/lazybeaver/bitset" ) func main() { bs := bitset.New(4) bs.Set(0) bs.Set(2) bs.InvertAll() ...

    浅谈Java BitSet使用场景和代码示例

    主要介绍了浅谈Java BitSet使用场景和代码示例,具有一定借鉴价值,需要的朋友可以参考下。

    对java的BitSet的多线程并发的探索

    NULL 博文链接:https://huangyunbin.iteye.com/blog/2194731

Global site tag (gtag.js) - Google Analytics