`
welcomezhang
  • 浏览: 17921 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Guava之RangeSet学习小结

阅读更多

简介

  RangeSet用来处理一系列不连续,非空的range。当添加一个range到一个RangeSet之后,任何有连续的range将被自动合并,而空的range将被自动去除。

  RangeSet类是一个接口,需要用它的子类来声明一个RangeSet型的对象,实现了RangeSet接口的类有ImmutableRangeSet和TreeRangeSet,ImmutableRangeSet是一个不可修改的RangeSet,而TreeRangeSet是利用树的形式来实现。

 

使用

        RangeSet<Integer> rangeSet = TreeRangeSet.create();
        rangeSet.add(Range.closed(1, 10));
        System.out.println("rangeSet:"+rangeSet);
        rangeSet.add(Range.closedOpen(11, 15));
        System.out.println("rangeSet:"+rangeSet);
        rangeSet.add(Range.open(15, 20));
        System.out.println("rangeSet:"+rangeSet);
        rangeSet.add(Range.openClosed(-1, 1));
        System.out.println("rangeSet:"+rangeSet);
        rangeSet.remove(Range.open(5, 10));
        System.out.println("rangeSet:"+rangeSet);

 结果

rangeSet:[[1‥10]]
rangeSet:[[1‥10], [11‥15)]
rangeSet:[[1‥10], [11‥15), (15‥20)]
rangeSet:[(-1‥10], [11‥15), (15‥20)]
rangeSet:[(-1‥5], [10‥10], [11‥15), (15‥20)]

 

 

遍历

Set ranges = rangeSet.asRanges();
        Iterator<Range> iterator = ranges.iterator();
        while (iterator.hasNext()){
            Range next = iterator.next();
            System.out.println(next);
        }

 

结果

(-1‥5]
[10‥10]
[11‥15)
(15‥20)

 

其他操作

 如果我们需要得到rangeSet互补的范围,我们可以用RangeSet提供的complement()方法。

RangeSet complement = rangeSet.complement();
 System.out.println(complement);
[(-∞‥-1], (5‥10), (10‥11), [15‥15], [20‥+∞)]

 

如果想知道某个元素是在rangeSet中哪个范围里面:

Range integerRange = rangeSet.rangeContaining(17);
System.out.println(integerRange);//输出(15‥20),因为17被包含在(15‥20)中,所以输出这个范围。

 

 

分享到:
评论

相关推荐

    Google中的Guava源码

    Guava is a set of core Java libraries from Google that includes new collection types (such as multimap and multiset), immutable collections, a graph library, and utilities for concurrency, I/O, ...

    不加密Google Guava视频教程.txt

    ├─Google Guava 第07讲-Guava之StopWatch和JDK之ServiceLoader讲解.wmv ├─Google Guava 第08讲-Guava之Files讲解(废话比较多).wmv ├─Google Guava 第09讲-Guava之Files讲解第二部分.wmv ├─Google Guava ...

    guava-18.0(guava-18.0.jar和guava-18.0-sources.jar)

    Guava是Google开发的一个核心库,它为Java平台提供了许多实用工具类,涵盖了集合、并发、I/O、字符串处理、数学运算等多个方面。这个压缩包包含的是Guava库的18.0版本,分为两个部分:`guava-18.0.jar`和`guava-18.0...

    guava-19.0 jar和sources

    总结来说,Guava-19.0的这两个jar文件以及对应的sources.jar,为Java开发者提供了强大的工具集,不仅可以在常规Java项目中使用,也能很好地适应GWT的开发需求。源码的提供使得学习和定制变得更加容易,是Java开发中...

    guava-23.0.zip guava.jar guava

    在标题和描述中提到的"guava-23.0.zip"是一个包含Guava库版本23.0的压缩文件,而"guava.jar"则是Guava库的JAR文件,"guava"可能指的是Guava库本身或者与其相关的其他内容。 Guava库的核心特性包括: 1. **集合框架...

    guava学习知识点

    Guava 是 Google 开源的一个 Java 工具包,包含了丰富的工具类和库,极大地扩展了 Java 的功能。这里我们详细探讨一下 Guava 的主要知识点。...学习并掌握 Guava,将极大地提升 Java 开发的生产力和代码质量。

    guava-31.1-jre.jar

    guava

    guava源文档

    guava源文档guava源文档guava源文档guava源文档guava源文档guava源文档guava源文档guava源文档guava源文档guava源文档guava源文档guava源文档guava源文档guava源文档guava源文档guava源文档guava源文档guava源文档...

    google guava 中文教程

    Guava还包含了一些其他实用功能,如事件总线(EventBus)用于解耦组件间的通信,RangeSet用于处理有序值的集合,Optional类用于表示可能为空的值,避免空指针异常。 总的来说,Google Guava库是一个功能强大的Java...

    guava-23.0-API文档-中文版.zip

    赠送jar包:guava-23.0.jar; 赠送原API文档:guava-23.0-javadoc.jar; 赠送源代码:guava-23.0-sources.jar; 赠送Maven依赖信息文件:guava-23.0.pom; 包含翻译后的API文档:guava-23.0-javadoc-API文档-中文...

    guava-17.0-API文档-中文版.zip

    赠送jar包:guava-17.0.jar; 赠送原API文档:guava-17.0-javadoc.jar; 赠送源代码:guava-17.0-sources.jar; 赠送Maven依赖信息文件:guava-17.0.pom; 包含翻译后的API文档:guava-17.0-javadoc-API文档-中文...

    guava-20.0-API文档-中文版.zip

    赠送jar包:guava-20.0.jar; 赠送原API文档:guava-20.0-javadoc.jar; 赠送源代码:guava-20.0-sources.jar; 赠送Maven依赖信息文件:guava-20.0.pom; 包含翻译后的API文档:guava-20.0-javadoc-API文档-中文...

    google开源项目guava.jar包

    Guava的集合框架扩展了Java内置的集合类,如List、Set和Map,提供了更强大的功能。例如,它包含Multiset(多集合)和Multimap(多映射)这样的数据结构,可以方便地处理多值关联的情况。Guava还引入了Immutable...

    guava-18.0-API文档-中文版.zip

    赠送jar包:guava-18.0.jar; 赠送原API文档:guava-18.0-javadoc.jar; 赠送源代码:guava-18.0-sources.jar; 包含翻译后的API文档:guava-18.0-javadoc-API文档-中文(简体)版.zip 对应Maven信息:groupId:...

    guava多个版本jar包

    这个压缩包包含的是Guava的不同版本,分别是guava-2.6.2.jar、guava-18.0.jar、guava-19.0.jar和guava-23.0.jar。每个版本都有其特定的功能和改进,让我们逐一探讨这些版本的关键特性。 1. guava-2.6.2.jar:这是...

    Android代码-guava

    Guava is a set of core libraries that includes new collection types (such as multimap and multiset), immutable collections, a graph library, functional types, an in-memory cache, and APIs/utilities ...

    guava-21.0-rc2 、guava-21.0-rc2-javadoc 、guava-21.0-rc2-sources

    3. **guava-21.0-rc2-sources**: 这是Guava库的源代码文件,对于开发者来说,查看源码可以帮助理解库内部的工作机制,进行学习、调试或者定制功能。通过源码,开发者可以看到Guava是如何实现各种高级数据结构、集合...

    guava-11.0.2-API文档-中文版.zip

    赠送jar包:guava-11.0.2.jar; 赠送原API文档:guava-11.0.2-javadoc.jar; 赠送源代码:guava-11.0.2-sources.jar; 赠送Maven依赖信息文件:guava-11.0.2.pom; 包含翻译后的API文档:guava-11.0.2-javadoc-API...

    Google Guava 官方教程

    Guava 提供了预定义的整数、浮点数范围(Range),以及布尔值、字符串和集合的常量。 9. **检查类** Guava 的 Preconditions 类提供了一些静态方法,用于在代码中添加断言,确保参数的正确性,从而提高代码质量。...

    Guava 工程项目包 有实例

    这个"Guava 工程项目包"包含了一个完整的 Guava 源码库,名为 "guava-master",对于学习和理解 Guava 的内部实现非常有帮助。 1. **核心库功能** - **集合框架**:Guava 提供了丰富的集合类,如 Multiset(多集)...

Global site tag (gtag.js) - Google Analytics