`

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 ...

    c+和+真是好东西c+和+真是好东西

    同时,C++11及后续标准引入了更多的现代特性,如智能指针、右值引用、lambda表达式和并发编程支持,使得C++更加现代化,易于编写出安全、高效的代码。 在游戏开发中,C++因其高性能和对硬件的低级别访问而被广泛...

    Modern C++ 11 知识点

    lambda表达式可以用于sort、for_each和any_of等STL算法中。 9. sort函数可以对序列进行排序,nth_element可以定位第n个元素,而不需要对整个序列排序。std::greater()和std::less()提供了比较函数对象。 10. ...

    Java海量数据处理BitSetmd,学习代码d

    函数式接口主要用于Lambda表达式的实现,增强了Java的函数式编程能力。 以上就是关于Java海量数据处理BitSet以及相关技术的知识点介绍,希望对你的学习有所帮助。理解并熟练运用这些工具和技术,能让你在处理大数据...

    很不错的stl(不错)

    STL的设计理念也对现代C++编程产生了深远影响,如C++11引入的范围基础的for循环和lambda表达式,都是在STL基础上的进一步发展。 在实际应用中,通过熟练掌握STL,开发者可以快速实现各种数据结构和算法,例如,使用...

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

     10.3.2 lambda表达式 345  10.3.3 lambda捕获和返回 349  10.3.4 参数绑定 354  10.4 再探迭代器 357  10.4.1 插入迭代器 358  10.4.2 iostream迭代器 359  10.4.3 反向迭代器 363  10.5 泛型算法结构 365 ...

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

     10.3.2 lambda表达式 345  10.3.3 lambda捕获和返回 349  10.3.4 参数绑定 354  10.4 再探迭代器 357  10.4.1 插入迭代器 358  10.4.2 iostream迭代器 359  10.4.3 反向迭代器 363  10.5 泛型算法结构 365 ...

    c++标准手册 ISO C++ Standard

    不过,随着时间的推移,C++标准继续发展,2011年(C++11)、2014年(C++14)、2017年(C++17)、2020年(C++20)等版本相继发布,引入了更多新特性,如lambda表达式、右值引用、类型推断(auto)、并发编程支持、...

    Effective C++ & More Effective C++

    16. **C++11及以后的新特性**:尽管原书可能不包含C++11及其后续版本的新特性,但《More Effective C++》可能会提及一些,如lambda表达式、右值引用和自动类型推断。 通过学习《Effective C++》和《More Effective ...

    第二章 字符串处理和进制转换(C++)_codes.rar

    最后,了解C++11及以后版本引入的特性,如右值引用、lambda表达式和类型推断(auto关键字),可以提升代码的效率和可读性,这对于解决信奥问题尤其有帮助。 总之,C++中的字符串处理和进制转换涉及广泛的知识点,...

    STL_Boost.doc

    - `Lambda`:未命名函数(lambda表达式)。 - `Member Function`:扩展STL的`mem_fun`和`mem_fun_ref`。 - `Ref`:包装对象引用,已被TR1接纳。 - `Result Of`:确定调用表达式返回类型,已被TR1接纳。 - `...

    java学习手册

    4. **函数式编程**:Java 8引入了Lambda表达式和Stream API,使得Java具备了函数式编程的能力。 5. **并发编程**:线程、同步机制(如synchronized关键字、wait()、notify()方法)、ExecutorService、并发集合等。 ...

    C++函数库(中英文都有)

    - **Lambda表达式**: 用于创建匿名函数,简化代码,常在函数式编程中使用。 - **范围基础的for循环**: 简化遍历容器的语法,如`for (auto& item : container)`. - **右值引用**: 支持移动语义,提高效率,如`std:...

    Boost程序库完全开发指南-中文第三版-带书签

    3. **算法**:Boost包含了一系列增强版的通用算法,如`foreach`循环、`bind`函数绑定和`lambda`表达式,使得代码更加简洁、可读性更强。 4. **模板元编程**:如`mpl`库,允许在编译时进行计算和类型操作,极大地...

    C++使用的boost库

    Boost库还包含了一些用于数值计算和统计分析的库,如`math`和`numeric`,其中`lambda`库可以方便地创建匿名函数,用于函数式编程风格。 11. **编译时元编程**: Boost.MPL(Meta-Programming Library)和Boost....

    c++ 标准库(未统计c++ 11 后的)

    C++标准库是C++编程语言的核心组成部分,它提供了丰富的功能和工具,使得开发者能够高效地...对于C++11及其后续版本的新特性,如lambda表达式、右值引用、自动类型推断等,开发者需要额外学习以充分利用C++的现代特性。

    C++准标准库Boost介绍

    1. **字符串和文本处理**:如Boost.Regex提供了正则表达式处理,Sprit用于解析和生成文本,String_algo提供了字符串操作算法,Tokenizer帮助处理分词问题。 2. **数据结构和算法**:包括Any(任意类型存储),Array...

    util:用于执行一般功能的各种功能

    10. **函数式接口**:Java 8引入了Lambda表达式和函数式接口,如Runnable、Comparator、Function等,增强了代码的简洁性和可读性。 以上只是`java.util`包中的一部分关键知识点,实际上,它还包含更多其他有用的...

    LeetCode-Java:LeetCode答案由Java编写

    - **Lambda 表达式**:简化函数式编程,如流API中的操作。 - **反射**:在某些特定场合下,如动态加载类、调用私有方法等。 - **设计模式**:工厂模式、单例模式、装饰器模式等在解题中可能会用到。 5. **性能...

Global site tag (gtag.js) - Google Analytics