文档章节

Guava新集合-RangeMap

Kevin-air
 Kevin-air
发布于 2016/08/05 14:54
字数 229
阅读 31
收藏 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。

© 著作权归作者所有

共有 人打赏支持
Kevin-air
粉丝 13
博文 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
好久不见,SpringSide 归来,有性能的基础库

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

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

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

qllinhongyu
2014/09/18
0
0
Google Guava 中文指南

温馨提示:Guava 中文指南的 GitHub 地址为 guava-guide,欢迎大家、,纠错。 Guava 中文指南   Guava 项目包含若干被 Google 的 Java 项目依赖的核心类库,例如:集合、缓存、原生类型支持...

qq_35246620
2017/09/13
0
0

没有更多内容

加载失败,请刷新页面

加载更多

6. Python3源码—List对象

6.1. List对象 List对象是“变长对象”。 6.1.1. Python中的创建 Python中List对象最重要的创建方法为PyList_New,如下Python语句最终会调用到PyList_New: test = [1, 2, 3, 4, 5] 6.1.2. ...

Mr_zebra
9分钟前
1
0
nginx屏蔽指定接口(URL)

Step1:需求 web平台上线后,需要屏蔽某个服务接口,但又不想重新上线,可以采用nginx屏蔽指定平台接口的办法 Step2:具体操作 location /dist/views/landing/UNIQUE_BEACON_URL { re...

Linux_Anna
17分钟前
2
0
tomcat高并发配置调优

作者:Joker-pan 原文:https://blog.csdn.net/u011622226/article/details/72510385?utm_source=copy --------------------- tomcat 解压就使用的,配置都没动过,肯定不能支持高并发了; ...

imbiao
35分钟前
2
0
mysql 联结,级联查询总结区分

其实我对 数据库的级联或者联结查询一直都是会用,项目能查询出来自己想要的结果即可。 毕竟SQL使用复杂的查询毕竟比较少,而且不难使用。 至于区分他们,我还真的有点模糊。 在看 《SQL必知...

之渊
52分钟前
2
0
区块链入门教程分享区块链POW证明代码实现demo

兄弟连区块链入门教程分享区块链POW证明代码实现demo 这里强调一下区块链的协议分层 应用层 合约层 激励机制 共识层 网络层 数据层 上 一篇主要实现了区块链的 数据层,数据层主...

兄弟连区块链入门教程
59分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部