`
sungang_1120
  • 浏览: 322437 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类

Guava API学习之Range

阅读更多

 

      在Guava中新增了一个新的类型Range,从名字就可以了解到,这个是和区间有关的数据结构。从Google官方文档可以得到定义:Range定义了连续跨度的范围边界,这个连续跨度是一个可以比较的类型(Comparable type)。比 如1到100之间的整型数据。不过我们无法遍历出这个区间里面的值。如果需要达到这个目的,我们可以将这个范围传给 ContiguousSet.create(com.google.common.collect.Range, com.google.common.collect.DiscreteDomain).来达到遍历这个范围里面的值。
  我们知道,在数学里面的范围是有边界和无边界之分的;同样,在Guava中也有这个说法。如果这个范围是有边界的,那么这个范围又可以分为包括开集(不包括端点)和闭集(包括端点);如果是无解的可以用+∞表示。如果枚举的话,一共有九种范围表示:

Guava Range

 

Guava Range

上表中的功能函数那一栏表示Range类提供的函数,分别来表示九种可能出现的范围区间。如果区间两边都存在范围,在这种情况下,区间右边的数不可能比区间左边的数小。在极端情况下,区间两边的数是相等的,但前提条件是最少有一个边界是闭集的,否则是不成立的。比如:

 

[a..a] : 里面只有一个数a;
[a..a); (a..a] : 空的区间范围,但是是有效的;
(a..a) : 这种情况是无效的,构造这样的Range将会抛出异常。

 在使用Range时需要注意:

 

 

  1. 在构造区间时,尽量使用不可改变的类型。如果你需要使用可变的类型,在区间类型构造完成的情况下,请不要改变区间两边的数;
  2. 一个实现了Comparable接口的类传进Range将会发生未定义的情况;目前Range API还没有阻止这种用法,但是未来可能会改变。
分享到:
评论

相关推荐

    google guava 中文教程

    **正文** Google Guava是Google开发的一个开源Java...通过学习和熟练掌握Guava,开发者能够编写出更加高效、易维护的Java应用程序。在实际工作中,根据项目需求选择合适的Guava工具,可以显著提升软件性能和可扩展性。

    Google Guava 30.1.1常用类介绍及实践代码

    以上只是 Guava 30.1.1 版本中的一部分核心功能,实际使用中还有许多其他实用工具类,如 `Range`, `EventBus`, `RateLimiter` 等。Guava 的设计目标是提高代码质量和效率,通过提供这些工具类,开发者可以更加专注于...

    谷歌guava的jar包和源码,值得收藏

    Guava对Java集合框架进行了扩展和优化,提供了如Multiset(多集)、Multimap(多映射)、ImmutableList、ImmutableSet、ImmutableMap等不可变集合,以及Ordering(排序)和Range(范围)等高级数据结构。这些类在...

    jackson-datatype-guava-2.8.0.zip

    通过Jackson Datatype Guava,我们可以让Jackson理解和序列化Guava库中的复杂数据结构,如Multimap、RangeSet、Optional等。这极大地提高了JSON处理的灵活性和效率。 Jackson Datatype Collections模块则专注于对...

    GuavaGoogle的Java核心库

    1. **集合框架**:Guava对Java集合框架进行了扩展,引入了如Multiset(多集)、Multimap(多映射)、ImmutableList、ImmutableMap和ImmutableSet等不可变集合,以及Ordering(排序)和Range(范围)类。这些集合提供...

    Guava:使用 Google Guava 框架

    Guava 提供了 Range 和 RangeSet 类,用于处理数值范围,特别适合在数据分析和统计场景中使用。 **9. 其他工具** Guava 还包含了如事件监听、服务加载、反射工具、时间戳处理等其他实用工具,为 Java 开发提供了全...

    jackson-datatype-json-org-2.7.3.zip

    Jackson-datatype-guava模块使得Jackson能够理解并处理Guava特定的类,如Range、Optional、Multiset等,将其转换为JSON和从JSON解析。这极大地提高了开发人员在处理Guava对象时的工作效率,特别是在与JSON交换数据的...

    assertj-jar.zip

    这使得使用Guava的项目能够无缝集成AssertJ,享受到更加直观和强大的断言功能,比如对于`Optional`、`Multiset`、`Range`等Guava特性的断言。 在实际应用中,AssertJ的强大力量体现在其丰富的API设计上。例如,针对...

    java 区间

    例如,Guava库提供了一个`Range`类,它支持区间操作并提供了丰富的API。通过阅读源码,我们可以学习到专业和高效的区间处理方式。 至于“工具”标签,可能暗示了存在一些工具或库可以帮助我们处理区间相关的任务。...

Global site tag (gtag.js) - Google Analytics