区间 -- 3




概述上一篇日志中,我们介绍了 guava 的 RangeSet 容器:区间集合 -- RangeSet本篇日志我们来介绍区间容器家族的另一个成员 -- RangeMapRangeSet 是一组区间的集合,然而有时,我们需要通过区间映射到一个值,也就是需要一个 map,他的 key 是 Range,value 是我们需要的值,这就是 RangeMap 的强大功能对于不同的时间段内,展示不同的文案等类似的功能,使用 RangeMap 将十分便捷 RangeMap 的实现类及创建方法RangeMap 的实现RangeMap 和 RangeSet 类似,拥有两个实现:TreeRangeMap -- 基于红黑树实现的拥有排序的 RangeMapImmutableRangeMap -- 不可变的 RangeMap 下面我们以 TreeRangeMap 为例来进行介绍 RangeMap 的创建方法TreeRangeMap 提供了 create 
#技术帖    #apache    #龙潭书斋    #java   
概述上一篇日志中,我们介绍了 guava 的区间结构 -- Range区间结构 -- Range 本文中我们来介绍 Range 的集合 -- RangeSet顾名思义,RangeSet 是若干个 Range 组成的 Set 结构,guava 提供的 RangeSet 是一个接口,他有以下实现:TreeRangeSet -- 通过红黑树实现的排序 RangeSetImmutableRangeSet -- 不可变的 RangeSet 由于 RangeSet 是利用 jdk1.6 提供的 NavigableMap 特性实现的,因此只有在 jdk1.6 及以上版本才能使用此功能 RangeSet 的创建TreeRangeSet、ImmutableRangeSet 都提供了 create 方法,用来创建 RangeSet RangeSet<Long> rangeSet = TreeRangeSet
#读书笔记    #技术帖    #龙潭书斋    #range   
概述jdk 为我们提供了各式各样的容器,用来解决不同场景下的集合问题,但很多时候,我们需要维护的集合是连续跨度的范围,甚至是多段范围跨度的交集、并集,jdk 的容器就很难去支持了Guava 提供了 Range 类型,用来定义连续跨度的范围边界,并且这个连续跨度是一个可以比较的类型在此基础上,Guava 还提供了 RangeSet、RangeMap 实现多段范围边界集合的维护,在例如营业时间、允许的范围区间等问题的处理上,提供了前所未有的方便性一个 Range 对象定义了一段区间,对于一个区间,数学上有开区间和闭区间的区分,Range 的创建方法同样提供了对应的构造方式: 区间的创建Range 对象创建方法区间创建方法(a..b)open(C, C)[a..b]closed(C, C)[a..b)closedOpen(C, C)(a..b]openClosed(C, C)(a..+∞)greaterThan(C)[a..+∞)atLeast(C)(-∞..b)lessThan(C)(-∞..b]atMost(C)(-∞..+∞)all() 示例:Range.closed("left", "right"); //字典序
#java    #range    #集合    #guava   



京ICP备2021035038号