文档章节

Guava新集合-RangeMap

Kevin-air
 Kevin-air
发布于 2016/08/05 14:54
字数 229
阅读 79
收藏 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
29
0
Guava一些高效类的使用实践

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

zimingforever
2017/06/15
152
0
Guava集合[Collections]

2.1-不可变集合 范例 为什么要使用不可变集合 不可变对象有很多优点,包括: 当对象被不可信的库调用时,不可变形式是安全的; 不可变对象被多个线程调用时,不存在竞态条件问题 不可变集合不...

曲中人_
03/30
0
0
guava集合下四 -新的集合类型

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

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

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

江南白衣
2017/01/16
14.2K
81

没有更多内容

加载失败,请刷新页面

加载更多

一起来学Java8(四)——复合Lambda

在一起来学Java8(二)——Lambda表达式中我们学习了Lambda表达式的基本用法,现在来了解下复合Lambda。 Lambda表达式的的书写离不开函数式接口,复合Lambda的意思是在使用Lambda表达式实现函...

猿敲月下码
9分钟前
0
0
debian10使用putty配置交换机console口

前言:Linux的推广普及,需要配合解决实际应用方能有成效! 最近强迫自己用linux进行实际工作,过程很痛苦,还好通过网络一一解决,感谢各位无私网友博客的帮助! 系统:debian10 桌面:xfc...

W_Lu
40分钟前
10
0
aelf Enterprise 0.8.0 beta有奖公测,“Bug奖金计划”重磅开启

2019年9月30日,aelf Enterprise 0.8.0 beta版正式发布。aelf Enterprise 0.8.0 beta是一个完备的区块链系统, 包含完备的区块链系统、开发套件、开发文档、以及配套的基础应用和基础服务。 ...

AELF开发者社区
41分钟前
8
0
oracle 初始化数据库脚本

create user lpf identified by 123456; create tablespace lpf_ts_cms datafile '/opt/app/oracle/product/11.2.0/lpf.dbf' size 200M; alter user lpf default tablespace lpf_ts_cms; sel......

internetafei
46分钟前
7
0
深入了解Redis底层数据结构

说明 说到Redis的数据结构,我们大概会很快想到Redis的5种常见数据结构:字符串(String)、列表(List)、散列(Hash)、集合(Set)、有序集合(Sorted Set),以及他们的特点和运用场景。不过它们是...

TurboSanil
46分钟前
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部