ImmutableMap】的更多相关文章

不可变集合,为什么使用它呢?线程安全\更有效的利用内存\可作为常量 ImmutableMap.<String, Object> builder().put("yananList", yananList).build(); //buider.build返回ImmutableMap Guava集合和不可变对应关系@参考文章 可变集合类型 可变集合源:JDK or Guava? Guava不可变集合 Collection JDK ImmutableCollection List…
ImmutableMap 的作用就是:可以让java代码也能够创建一个对象常量映射,来保存一些常量映射的键值对. 分析以下情景,来具体讨论这个的好处. 假设现在有需求如下:根据数据库存的某个key字段,来获得不同的提示名字.有以下3种处理方法1:用 多个 if else 语句,只要新添加个字段,你就得添加个 if else    ,差评2:用 switch case  语句,只要新添加个字段,你就得添加个 case       ,差评3:用 对象映射 方法,如下所示. 新建字段,只需要添加一行就…
原文地址:https://blog.csdn.net/wantsToBeASinger/article/details/84997362 java中的Immutable对象: 简单地说,如果一个对象实例不能被更改就是一个Immutable的对象,Java SDK提供的大量值对象,比如String等都是Immutable的对象. 创建ImmutableMap: Map<String,Object> immutableMap = new ImmutableMap.Builder<String…
示例 在项目中有发现类似下方的代码, Map tmpParams = ImmutableMap.of( "extraInfos", ext.get("extraInfos"), "otherParams" , ImmutableMap.builder() .put("version" , 0) .put("orderId" , MapUtils.getString(ext,"orderId&quo…
项目实战 最近接了一个出行权益的需求,回调的状态有十几种,需要转换为进行中,取消,已完成几种状态进行订单状态的展示,使用ImmutableMap可以简化语句,替代使用if-else 语句或者switch 语句. ImmutableMap介绍 其中immutable[ɪˈmjuːtəbl],adj. 不变的:不可变的:不能变的. 使用场景 对于映射关系的 if-else 语句或者switch 语句,可以用Map来简化. 示例展示 使用switch 1 public static String ge…
一.案例场景 遇到过这样的场景,在定义一个static修饰的Map时,使用了大量的put()方法赋值,就类似这样-- public static final Map<String,String> dayMap= new HashMap<>(); static { dayMap.put("Monday","今天上英语课"); dayMap.put("Tuesday","今天上语文课"); dayMap.p…
selenium + java + mac + idea 报错分析: 网上搜的教程,配置selenium 自动化测试环境,都是只让导入 client-combined-3.141.59-sources.jar  和 client-combined-3.141.59.jar,没有说让导入lib 目录下的jar 包,博主也没仔细看,明明jar包都导入了啊,后实在看不出来原因,去看这个jar 包的时候,发现这里面还有几个jar 包.好吧,导入就OK了. Java 代码如下: import org.op…
引言 本文为 Java 性能分析工具系列文章第二篇,第一篇:操作系统工具.在本文中将介绍如何使用 Java 内置监控工具更加深入的了解 Java 应用程序和 JVM 本身.在 JDK 中有许多内置的工具,其中包括: jcmd:打印一个 Java 进程的类,线程以及虚拟机信息.适合用在脚本中.使用 jcmd - h 来查看使用方法. jconsole:提供 JVM 活动的图形化展示,包括线程使用,类使用以及垃圾回收(GC)信息. jhat:帮助分析内存堆存储. jmap:提供 JVM 内存使用信息…
Scala's object-oriented collections support mutable and immutable type hierarchies. Also support functional higher-order operations such as map, filter, and reduce that let you use expression-oriented programming in collections. Higher-order operatio…
作者:Jack47 转载请保留作者和原文出处 欢迎关注我的微信公众账号程序员杰克,两边的文章会同步,也可以添加我的RSS订阅源. 本文是我写的Google开源的Java编程库Guava系列之一,主要介绍Guava中提供的集合(Collection)相关的API. 1. 一些小功能 集合声明更简单 Java中同质的范型集合是一个很大的特色,但是有些时候他们的构造函数有点太啰嗦了,比如: Map<String, Map<String, Integer>> lookup = new Ha…
Swagger使用 1. Swagger UI 按以下步骤配置,项目启动后访问:http://localhost:8080/swagger-ui.html 1.1 添加依赖 <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.2.2</version> </depende…
最近在给客户准备一个Guava的分享,所以会陆续的更新关于Guava更多的细节分享.本文将记录Guava中得字符串处理Joiner(连接)和Splitter(分割)处理. Joiner 首先我们来看看下面我们经常遇见的一个案例: 题目: 对于一个如下定义List List<String> list = new ArrayList<String>("1", "2", null, “3”); 按照’,’分割,并过滤掉null. 如果不用第三方库,…
Table 当我们需要多个索引的数据结构的时候,通常情况下,我们只能用这种丑陋的Map<FirstName, Map<LastName, Person>>来实现.为此Guava提供了一个新的集合类型-Table集合类型,来支持这种数据结构的使用场景.Table支持“row”和“column”,而且提供多种视图. @Test public void TableTest(){ Table<String, Integer, String> aTable = HashBased…
BiMap提供了一种新的集合类型,它提供了key和value的双向关联的数据结构. 通常情况下,我们在使用Java的Map时,往往是通过key来查找value的,但是如果出现下面一种场景的情况,我们就需要额外编写一些代码了.首先来看下面一种表示标识序号和文件名的map结构. @Test public void logMapTest(){ Map<Integer,String> logfileMap = Maps.newHashMap(); logfileMap.put(1,"a.lo…
在日常的开发工作中,我们有的时候需要构造像Map<K, List<V>>或者Map<K, Set<V>>这样比较复杂的集合类型的数据结构,以便做相应的业务逻辑处理.例如: import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import org.junit.Test; public class MultimapTe…
Guava引进了JDK里没有的,但是非常有用的一些新的集合类型.所有这些新集合类型都能和JDK里的集合平滑集成.Guava集合非常精准地实现了JDK定义的接口.Guava中定义的新集合有: Multiset SortedMultiset Multimap ListMultimap SetMultimap BiMap ClassToInstanceMap Table Multiset集合 Multiset是什么?顾名思义,Multiset和Set的区别就是可以保存多个相同的对象.在JDK中,Lis…
不可变集合,顾名思义就是说集合是不可被修改的.集合的数据项是在创建的时候提供,并且在整个生命周期中都不可改变. 为什么要用immutable对象?immutable对象有以下的优点: 1.对不可靠的客户代码库来说,它使用安全,可以在未受信任的类库中安全的使用这些对象 2.线程安全的:immutable对象在多线程下安全,没有竞态条件 3.不需要支持可变性, 可以尽量节省空间和时间的开销. 所有的不可变集合实现都比可变集合更加有效的利用内存 (analysis) 4.可以被使用为一个常量,并且期望…
guava 学习笔记(二) 瓜娃(guava)的API快速熟悉使用 1,大纲 让我们来熟悉瓜娃,并体验下它的一些API,分成如下几个部分: Introduction Guava Collection API Guava Basic Utilities IO API Cache API 2,为神马选择瓜娃? 瓜娃是java API蛋糕上的冰激凌(精华) 高效设计良好的API. 被google的开发者设计,实现和使用. 遵循高效的java这本书的好的语法实践. 使代码更刻度,简洁,简单. 使用jav…
在本系列中我们首先来学习一些Guava的集合框架,也就是这个package:com.google.common.collect 在这个包下面有一些通用的集合接口和一些相关的类.   集合类型: BiMap    它是java.util.Map接口的一个扩展,它的特性就是它的key和value都是唯一的并且是一一对应的.也就是说"可逆".简单的描述就是根据key能拿到唯一的value,根据value也能够拿到唯一的key. Multiset     它是Collection的扩展,就如同…
0.导入 maven依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-redis</artifactId></dependency> 1.SDR说明Spring Data Redis(SDR),是SpringFramework提供的一套简化访问Redis的API,是对Jedis的又一层封装.SDR集成了…
最近比较空闲就仔细看了一下Selenium的源码,因为主要是使用WebDriver所以重点关注了一下WebDriver的工作原理.在前一篇blog里已经解释过了WebDriver与之前Selenium的JS注入实现不同,直接利用了浏览器native support来操作浏览器.所以对于不同平台,不同的浏览器,必须依赖一个特定的浏览器的native component来实现把WebDriver API的调用转化为浏览器的native invoke. 在我们new一个WebDriver的过程中,Se…
文章转载自:http://my.oschina.net/leejun2005/blog/172328 目录:[ - ] 1-使用 GOOGLE COLLECTIONS,GUAVA,STATIC IMPORTS 编写漂亮代码 1.Google Collections一览 2.操作lists和maps 3.静态导入和Eclipse模板 4.Guava走马观花 2-深入探索 GOOGLE GUAVA 库 1.The Guava CharMatcher 2.Joiner and Splitter 3.W…
转载:http://www.cnblogs.com/peida/p/Guava_ImmutableCollections.html Table: 当我们需要多个索引的数据结构的时候,通常情况下,我们只能用这种丑陋的Map<FirstName, Map<LastName, Person>>来实现.为此Guava提供了一个新的集合类型-Table集合类型,来支持这种数据结构的使用场景.Table支持"row"和"column",而且提供多种视图.…
Lists: 其内部使用了静态工厂方法代替构造器,提供了许多用于List子类构造和操作的静态方法,我们简单的依次进行说明,如下: newArrayList():构造一个可变的.空的ArrayList实例. newArrayList(E... elements):构造一个可变的包含传入元素elements的ArrayList实例. newArrayList(Iterable<? extends E> elements):构造一个可变的包含传入元素elements的ArrayList实例. new…
Joiner: List<String> stringList = new ArrayList<String>(); stringList.add("aa"); stringList.add("bb"); System.out.println(new JoinerTest().buildString(stringList, "/")); System.out.println(Joiner.on("|")…
查看topics: ls /brokers/topics [mytopic] 查看topic所在的broker,下面例子,mytopic在broker 0 中管理. ls /brokers/topics/mytopic [0] 查看brocker中,某个topic有多少partition: get /brokers/topics/mytopic/0 3 查看brocker信息: 存在brocker 0 ls /brokers/ids [0] 查看brocker详细信息:机器名-时间戳:机器IP:…
​    ​guava是在原先google-collection 的基础上发展过来的,是一个比较优秀的外部开源包,最近项目中使用的比较多,列举一些点.刚刚接触就被guava吸引了... ​    ​这个是guava的一个官网ppt里面的介绍: 1 2 3 4 5 其实你可能发现,一些基本的校验完全可以自己写,但是.. 这些东西仅仅是看起来比较简单,实际上可能比我们想想的要复杂: 用一个公共的lib,别人可能更加容易理解你的代码: 当你用一个主流的开源包的时候,你可能在主流中: 当你发现一个可以提…
4.3.1.2.1 Producer和DataSource之间适配器处理的逻辑 还是从程序的入口开始说吧 CloseableProducerToDataSourceAdapter.create() 源码 此处看到无非是创建了一个新的数据适配器而已CloseableProducerToDataSourceAdapter public static <T> DataSource<CloseableReference<T>> create( Producer<Close…
https://github.com/wurstmeister/storm-kafka-0.8-plus http://blog.csdn.net/xeseo/article/details/18615761   准备,一些相关类 GlobalPartitionInformation (storm.kafka.trident) 记录partitionid和broker的关系 GlobalPartitionInformation info = new GlobalPartitionInformat…
1,大纲 让我们来熟悉瓜娃,并体验下它的一些API,分成如下几个部分: Introduction Guava Collection API Guava Basic Utilities IO API Cache API 2,为神马选择瓜娃? 瓜娃是java API蛋糕上的冰激凌(精华) 高效设计良好的API. 被google的开发者设计,实现和使用. 遵循高效的java这本书的好的语法实践. 使代码更刻度,简洁,简单. 使用java 1.5的特性, 流行的API,动态的开发 它提供了大量相关的应用…