文档章节

Guava新集合-RangeMap

Kevin-air
 Kevin-air
发布于 2016/08/05 14:54
字数 229
阅读 39
收藏 0

RangeMap 
  RangeMap代表了非连续非空的range对应的集合。不像RangeSet,RangeMap不会合并相邻的映射,甚至相邻的range对应的是相同的值。

示例

import com.google.common.collect.Range;
import com.google.common.collect.RangeMap;
import com.google.common.collect.TreeRangeMap;
import org.junit.Test;

import java.util.Map;

/**
 * @author Kevin
 * @description
 * @date 2016/8/5
 */
public class RangeMapTest {

    @Test
    public void rangeMapTest() {
        RangeMap<Integer, String> rangeMap = TreeRangeMap.create();

        rangeMap.put(Range.closed(20, 30), "Kevin");
        // [[1‥10]=Kevin]
        System.out.println(rangeMap);

        rangeMap.put(Range.closed(1, 10), "Han");
        // [[1‥10]=Han, [20‥30]=Kevin]
        System.out.println(rangeMap);

        rangeMap.put(Range.closed(5, 15), "Chris");
        // [[1‥5)=Han, [5‥15]=Chris, [20‥30]=Kevin]
        System.out.println(rangeMap);

        rangeMap.remove(Range.closed(5, 12));
        // [[1‥5)=Han, (12‥15]=Chris, [20‥30]=Kevin]
        System.out.println(rangeMap);

        // unmodifiable,use to iterator
        Map<Range<Integer>, String> mapOfRanges = rangeMap.asMapOfRanges();
        mapOfRanges.entrySet();
        mapOfRanges.keySet();
        mapOfRanges.values();

        // 交集
        RangeMap<Integer, String> subRangeMap = rangeMap.subRangeMap(Range.closed(13, 25));
        // {[13‥15]=Chris, [20‥25]=Kevin}
        System.out.println(subRangeMap);
    }
}

RangeMap的视图
  RangeMap提供了两种视图:
  asMapOfRanges():返回Map<Range<K>, V>类型的视图。这个操作可以被用作迭代操作。
  subRangeMap(Range<K>)提供给定Range的交集。这个操作可以推广到传统的headMap, subMap, 和tailMap。

© 著作权归作者所有

共有 人打赏支持
上一篇: Guava缓存-Cache
Kevin-air
粉丝 14
博文 73
码字总数 26587
作品 0
深圳
私信 提问
Guava学习笔记:Guava新集合-Table等

  Table   当我们需要多个索引的数据结构的时候,通常情况下,我们只能用这种丑陋的 Map<FirstName, Map<LastName, Person>>来实现。为此Guava提供了一个新的集合类型-Table集合类型,来...

pior
2015/04/01
0
0
Guava一些高效类的使用实践

guava是google的一个强大的工具包,目前已经更新到版本22 https://github.com/google/guava,一直有断断续续的用过一些方法,但是没有系统的撸一遍所有功能 今天参考并发编程网记录一些高效的...

zimingforever
2017/06/15
0
0
guava集合下四 -新的集合类型

guava中产生了jdk中没有的新集合,而且是广泛使用的,这些都能和jdk中集合框架共存,没有将这些硬结合到jdk的抽象集合。 通常,guava集合实现了jdk的接口,紧密的结合到了一起 Multiset 和传...

writeademo
2018/11/28
0
0
好久不见,SpringSide 归来,有性能的基础库

一入侯门深似海,大家两年不见了。 1. 开场白 这次复活的是SpringSide-Utils模块,把在唯品会两年的实践抽取出来,做一个大大大的公共类库。一边封装 Guava 和 Apache Common Lang,一边参考...

江南白衣
2017/01/16
12.1K
81
Google Guava 笔记

一、引言 Guava 是 google 几个java核心类库的集合,包括集合 [collections] 、缓存 [caching] 、原生类型支持 [primitives support] 、并发库 [concurrency libraries] 、通用注解 [common ...

qllinhongyu
2014/09/18
0
0

没有更多内容

加载失败,请刷新页面

加载更多

徒手撸一个简单的RPC框架

徒手撸一个简单的RPC框架 之前在牛逼哄哄的 RPC 框架,底层到底什么原理得知了RPC(远程过程调用)简单来说就是调用远程的服务就像调用本地方法一样,其中用到的知识有序列化和反序列化、动态...

不学无数的程序员
33分钟前
1
0
Java 面试题目最全集合1000+ 大放送,能答对70%就去BATJTMD试试~

2019,相对往年我们会发现今年猎头电话少了,大部分企业年终奖缩水,加薪幅度也不如往年,选择好offer就要趁早,现在开始准备吧,刷一波Java面试题,能回答70%就去BATJTMD大胆试试~ 以下是2...

mikechen优知
38分钟前
2
0
玩转Koa之核心原理分析

Koa作为下一代Web开发框架,不仅让我们体验到了async/await语法带来同步方式书写异步代码的酸爽,而且本身简洁的特点,更加利于开发者结合业务本身进行扩展。 本文从以下几个方面解读Koa源码...

前端小攻略
40分钟前
1
0
分布式之数据库和缓存双写一致性方案解析

为什么写这篇文章? 首先,缓存由于其高并发和高性能的特性,已经在项目中被广泛使用。在读取缓存方面,大家没啥疑问,都是按照下图的流程来进行业务操作。 ![] 但是在更新缓存方面,对于更新...

hensemlee
今天
5
0
怎么学习大数据

最近有很多人在找,大数据是怎么学?需要学什么技术以及这些技术的学习顺序是什么?今天有时间我把个问题总结成文章分享给大家。 那大数据处理技术怎么学习呢?首先我们要学习Java语言和Lin...

董黎明
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部