美文网首页
Guava使开发更简单之RangeMap

Guava使开发更简单之RangeMap

作者: 一只白羊座的猫 | 来源:发表于2019-03-03 11:53 被阅读0次

简介

RangeMap是一种集合类型(collection type),它将不相交、且不为空的Range(key)映射给一个值(Value)。RangeMap跟一般的Map一样,存储键值对,按照键来取值。不同于Map的是键的类型必须是Range,也既是一个区间。

和RangeSet一样,实现RangeMap也是一个接口,实现它的也只有两个类,分别为ImmutableRangeMap和TreeRangeMap。用的多的还是TreeRangeMap,下面主要以TreeRangeMap来说明RangeMap。TreeRangeMap是key有序的。具体区间排序规则就不再说了。

基础用法

添加/删除

RangeMap<Integer, Integer> rangeMap = TreeRangeMap.create();
rangeMap.put(Range.closed(1, 10), 1);
System.out.println(rangeMap);

rangeMap.put(Range.open(3, 6), 2);
System.out.println(rangeMap);

rangeMap.put(Range.openClosed(10, 20), 3);
System.out.println(rangeMap);

rangeMap.put(Range.closed(20, 20), 4);
rangeMap.remove(Range.closed(5, 11));
System.out.println(rangeMap);

输出结果:

[[1..10]=1]
[[1..3]=1, (3..6)=2, [6..10]=1]
[[1..3]=1, (3..6)=2, [6..10]=1, (10..20]=3]
[[1..3]=1, (3..5)=2, (11..20)=3, [20..20]=4]

note

  1. 如果TreeRangeMap要插入的区间与TreeRangeMap已保存的区间发生重叠,那么TreeRangeMap会对之前的区间切割,保留当前插入区间的完整性。
  2. 和RangeSet不一样,RangeMap不可以将相邻的区间合并,即使这个区间映射的值是一样的。
  3. 其中TreeRangeMap是key有序的。

查询

System.out.println(rangeMap.get(15));
System.out.println(rangeMap.get(6));

输出结果:

3
null

遍历

    Map<Range<Integer>, Integer> map = rangeMap.asMapOfRanges();
    Set<Map.Entry<Range<Integer>, Integer>> entrySet = map.entrySet();
    Set<Range<Integer>> keySet = map.keySet();
    Collection<Integer> values = map.values();

asMapOfRanges()方法得到RangeMap的Map<Range, V>视图,我们可以利用它来遍历RangeMap。

后记

以上是Guava之RangeMap学习小结的内容。

—— DrugBean 记于 2019.01.23

相关文章

  • Guava使开发更简单之RangeMap

    简介 RangeMap是一种集合类型(collection type),它将不相交、且不为空的Range(key)...

  • Guava记录 - 新集合类型RangeMap

    一、简介 Guava - RangeMap是Guava中新出的集合类型。官网对其描述如下: RangeMap is...

  • Anko for Android

    Anko 是一个使开发Android应用更简单更快捷的库,Anko使你的代码简洁易懂, 使开发者不用再在意Andr...

  • 并发编程工具(十)Guava之RateLimiter

    Guava之RateLimiter

  • 高并发系统技术梳理

    缓存 缓存使用常见问题归纳Guava Cache系列之一Guava Cache系列之二Guava Cache系列之...

  • guava 限流的实现

    使用 google guava 实现简单的限流 参考 https://ifeve.com/guava-rateli...

  • spring boot

    springboot使spring应用开发更简单,主要体现在4个方面: 1.springbootstarter:它...

  • Guava Cache用法介绍

    Guava Cache的使用场景 参考1 Guava Cache用法介绍2 分布式系统缓存系列之guava cache

  • Guava工具类

    Guava工具类 简介 Guava 是Google基于java1.6开发的工具扩展库。 主要包括: annotat...

  • 使之简单

    假如真的决定要开始练习冥想,你不必跑去告知他人,也不必谈论你进行冥想的理由或它会给你带来何种益处。事实上,这样做只...

网友评论

      本文标题:Guava使开发更简单之RangeMap

      本文链接:https://www.haomeiwen.com/subject/taspuqtx.html