简介
RangeMap是一种集合类型( collection type),它将不相交、且不为空的Range(key)映射给一个值(Value)。RangeMap跟一般的Map一样,存储键值对,按照键来取值。不同于Map的是键的类型必须是Range,也既是一个区间。
和RangeSet一样,实现RangeMap也是一个接口,实现它的也只有两个类,分别为mmutableRangeMap和TreeRangeMap。用的多的还是TreeRangeMap,下面主要以TreeRangeMap来说明RangeMap。
基础用法
添加/删除
public static void main(String[] args) { RangeMap<Integer, String> rangeMap = TreeRangeMap.create(); rangeMap.put(Range.closed(1, 10), "aaa"); System.out.println(rangeMap); rangeMap.put(Range.open(3, 6), "bbb"); System.out.println(rangeMap); rangeMap.put(Range.openClosed(10, 20), "aaa"); System.out.println(rangeMap); rangeMap.put(Range.closed(20, 20), "aaa"); rangeMap.remove(Range.closed(5, 11)); System.out.println(rangeMap); }
结果:
[[1‥10]=aaa]
[[1‥3]=aaa, (3‥6)=bbb, [6‥10]=aaa]
[[1‥3]=aaa, (3‥6)=bbb, [6‥10]=aaa, (10‥20]=aaa]
[[1‥3]=aaa, (3‥5)=bbb, (11‥20)=aaa, [20‥20]=aaa]
note:
1.如果TreeRangeMap要插入的区间与TreeRangeMap已保存的区间发生重叠,那么TreeRangeMap会对之前的区间切割,保留当前插入区间的完整性。
2.和RangeSet不一样,RangeMap不可以将相邻的区间合并,即使这个区间映射的值是一样的。
3.其中TreeRangeMap是key有序的。
遍历
asMapOfRanges()方法得到RangeMap的Map<Range, V>视图,我们可以利用它来遍历RangeMap。
使用map的entrySet
Map rangeStringMap = rangeMap.asMapOfRanges(); Set<Map.Entry<Range, String>> entries = rangeStringMap.entrySet(); Iterator<Map.Entry<Range, String>> iterator = entries.iterator(); while(iterator.hasNext()){ Map.Entry<Range, String> next = iterator.next(); System.out.println(next.getKey() + "\t" + next.getValue()); }
结果
[1‥3] aaa (3‥5) bbb (11‥20) aaa [20‥20] aaa
使用map的keySet
Set<Range> ranges = rangeStringMap.keySet(); Iterator<Range> iterator1 = ranges.iterator(); while(iterator1.hasNext()){ Range next = iterator1.next(); System.out.println(next + "\t" + rangeStringMap.get(next)); }
结果同上。
note:
推荐使用第一种遍历的方法。因为第二种遍历rangeStringMap时rangeStringMap.get(next),多访问了一次rangeStringMap,效率比较慢。
相关推荐
Guava 是 Google 开源的一个 Java 工具包,包含了丰富的工具类和库,极大地扩展了 Java 的功能。这里我们详细探讨一下 Guava 的主要知识点。...学习并掌握 Guava,将极大地提升 Java 开发的生产力和代码质量。
├─Google Guava 第07讲-Guava之StopWatch和JDK之ServiceLoader讲解.wmv ├─Google Guava 第08讲-Guava之Files讲解(废话比较多).wmv ├─Google Guava 第09讲-Guava之Files讲解第二部分.wmv ├─Google Guava ...
Guava是Google开发的一个核心库,它为Java平台提供了许多实用工具类,涵盖了集合、并发、I/O、字符串处理、数学运算等多个方面。...这两个JAR文件的组合,为开发者提供了使用和学习Guava所需的一切。
开发者可以通过查看这些源代码来理解Guava内部的工作原理,方便进行学习、调试和扩展。源码文件对于开发者来说是非常有价值的,特别是当遇到使用问题或想要自定义Guava功能时。 标签中的"guava"是指Guava库本身,它...
在标题和描述中提到的"guava-23.0.zip"是一个包含Guava库版本23.0的压缩文件,而"guava.jar"则是Guava库的JAR文件,"guava"可能指的是Guava库本身或者与其相关的其他内容。 Guava库的核心特性包括: 1. **集合框架...
guava
赠送jar包:guava-23.0.jar; 赠送原API文档:guava-23.0-javadoc.jar; 赠送源代码:guava-23.0-sources.jar; 赠送Maven依赖信息文件:guava-23.0.pom; 包含翻译后的API文档:guava-23.0-javadoc-API文档-中文...
guava源文档guava源文档guava源文档guava源文档guava源文档guava源文档guava源文档guava源文档guava源文档guava源文档guava源文档guava源文档guava源文档guava源文档guava源文档guava源文档guava源文档guava源文档...
赠送jar包:guava-20.0.jar; 赠送原API文档:guava-20.0-javadoc.jar; 赠送源代码:guava-20.0-sources.jar; 赠送Maven依赖信息文件:guava-20.0.pom; 包含翻译后的API文档:guava-20.0-javadoc-API文档-中文...
赠送jar包:guava-17.0.jar; 赠送原API文档:guava-17.0-javadoc.jar; 赠送源代码:guava-17.0-sources.jar; 赠送Maven依赖信息文件:guava-17.0.pom; 包含翻译后的API文档:guava-17.0-javadoc-API文档-中文...
赠送jar包:guava-18.0.jar; 赠送原API文档:guava-18.0-javadoc.jar; 赠送源代码:guava-18.0-sources.jar; 包含翻译后的API文档:guava-18.0-javadoc-API文档-中文(简体)版.zip 对应Maven信息:groupId:...
这个"Guava 工程项目包"包含了一个完整的 Guava 源码库,名为 "guava-master",对于学习和理解 Guava 的内部实现非常有帮助。 1. **核心库功能** - **集合框架**:Guava 提供了丰富的集合类,如 Multiset(多集)...
这个压缩包包含的是Guava的不同版本,分别是guava-2.6.2.jar、guava-18.0.jar、guava-19.0.jar和guava-23.0.jar。每个版本都有其特定的功能和改进,让我们逐一探讨这些版本的关键特性。 1. guava-2.6.2.jar:这是...
在开始学习Guava之前,你需要具备基本的Java编程知识。这样,你可以更好地理解和利用Guava提供的各种功能。 教程内容可能包括但不限于以下几个方面: 1. **集合框架增强**:Guava提供了如Multiset、Multimap、...
3. **guava-21.0-rc2-sources**: 这是Guava库的源代码文件,对于开发者来说,查看源码可以帮助理解库内部的工作机制,进行学习、调试或者定制功能。通过源码,开发者可以看到Guava是如何实现各种高级数据结构、集合...
赠送jar包:guava-11.0.2.jar; 赠送原API文档:guava-11.0.2-javadoc.jar; 赠送源代码:guava-11.0.2-sources.jar; 赠送Maven依赖信息文件:guava-11.0.2.pom; 包含翻译后的API文档:guava-11.0.2-javadoc-API...
谷歌的Guava库是Java开发中的一个非常重要的开源项目,它提供了一系列的高效、实用的工具类,大大简化了常见的编程任务。Guava的核心特性包括集合框架、缓存、原生类型支持、并发库、字符串处理、I/O操作等。这个...
通过学习 Google Guava 官方教程,开发者能够更有效地利用这些工具,提高代码质量和效率,同时降低维护成本。该教程深入浅出地解释了每个特性的使用方法,并通过实例帮助理解其工作原理。对于任何希望提升 Java 编程...
赠送jar包:guava-30.0-jre.jar; 赠送原API文档:guava-30.0-jre-javadoc.jar; 赠送源代码:guava-30.0-jre-sources.jar; 赠送Maven依赖信息文件:guava-30.0-jre.pom; 包含翻译后的API文档:guava-30.0-jre-...
赠送jar包:guava-20.0.jar; 赠送原API文档:guava-20.0-javadoc.jar; 赠送源代码:guava-20.0-sources.jar; 赠送Maven依赖信息文件:guava-20.0.pom; 包含翻译后的API文档:guava-20.0-javadoc-API文档-中文...