文档章节

Java_Map_初始化及其他

黑帽子
 黑帽子
发布于 2013/10/23 23:18
字数 380
阅读 55
收藏 0

初看 cgaolei 翻译的 Java技巧之双括弧初始化 一文,走马观花,只知用法,未细看后面的解释。蔚为惊艳,心里想 Java 竟然有这么神奇的语法而一直未得知。因为在初始化集合时确实方便不少。原来做某些测试要初始化集合时会用到 commons-lang 包和 JDK 的 Arrays 工具类,现在知道可以这么用了:


 

01.   Map map =newHashMap() {{    

02.           put("Name","Unmi");    

03.           put("QQ","1125535");    

04.   }};    

05.        

06.   List stooges =newArrayList() {{    

07.           add("Larry");    

08.           add("Moe");    

09.           add("Curly");    

10.   }};    

 
看起来都是在一条语句里完成,而不需要分步骤写成:


 

1.   Map map =newHashMap();    

2.   map.put("Name","Unmi");    

3.   map.put("QQ","1125535");    



一 不小心没好好理解的人可能以为它是什么特别的语法,关键是大括号连一块了,原作者也是在故作姿态,美其名曰:双括弧语法(double-brace syntax)。真是乱花渐欲迷人眼,其实就是匿名类加初始块。该文有解释:第一层括弧 实际是定义了一个内部匿名类 (Anonymous Inner Class),第二层括弧 实际上是一个实例初始化块 (instance initializer block),这个块在内部匿名类构造时被执行。

那怎么去更好理解它呢?如果我们写成如下的方式应该会更好理解吧,提个技巧,在 Eclipse 中对第一段代码按下 Ctrl + Shift + F 就如下了:


 

1.   Map map =newHashMap() {    

2.       {    

3.           put("Name","Unmi");    

4.           put("QQ","1125535");    

5.       }    

6.   };    

© 著作权归作者所有

共有 人打赏支持
黑帽子
粉丝 17
博文 53
码字总数 25680
作品 0
珠海
高级程序员
深入JDK源码之ThreadLocal类

学习JDK中的类,首先看下JDK API对此类的描述,描述如下:该类提供了线程局部 (thread-local) 变量。这些变量不同于它们的普通对应物,因为访问某个变量(通过其 get 或 set 方法)的每个线程...

陶邦仁
2015/03/26
0
6
探究ThreadLocal原理(基于Java8)

线程封闭 避免并发最简单的方法就是线程封闭。 即把对象封装到一个线程里,只有这一个线程能看到此对象。那么这个对象就算不是线程安全的也不会出现任何安全问题。 使用ThreadLocal是实现线程...

芥末无疆
02/10
0
0
java 之ThreadLocal

通过 ThreadLocal 能数据保存在一个线程中,而且不需要 lock 同步。理论上 ThreadLocal 可 以让一个变量在每个线程都有一个副本。 ThreadLocal 常用来屏蔽线程的私有变量,例如“并 发事务”或...

Beaver_
2015/04/04
0
0
ThreadLocal的原理与使用

通过源码解读ThreadLocal类的实现 ThreadLocal类提供了以下几个方法 get()方法是用来获取ThreadLocal在当前线程中保存的变量副本 set()用来设置当前线程中变量的副本 remove()用来移除当前线...

凌晨一点
08/30
0
0
ofbiz9框架 + oracle 11g整合开发

ofbiz9框架 + oracle 11g整合开发 转自 http://ajava.org/course/open/14640.html 转自 http://job6688.spaces.live.com/blog/cns!FA3F6195E8CF95F7!236.entry 核心提示:ofbiz默认的数据库为......

zlcolin
2010/12/29
0
0

没有更多内容

加载失败,请刷新页面

加载更多

现场看路演了!

HiBlock
4分钟前
0
0
Rabbit MQ基本概念介绍

RabbitMQ介绍 • RabbitMQ是一个消息中间件,是一个很好用的消息队列框架。 • ConnectionFactory、Connection、Channel都是RabbitMQ对外提供的API中最基本的对象。Connection是RabbitMQ的s...

寰宇01
21分钟前
1
0
官方精简版Windows10:微软自己都看不过去了

微软宣布,该公司正在寻求解决方案,以减轻企业客户的Windows 10规模。该公司声称,企业客户下载整个Windows 10文件以更新设备既费钱又费时。 微软宣布,该公司正在寻求解决方案,以减轻企业...

linux-tao
25分钟前
0
0
TypeScript基础入门之JSX(二)

转发 TypeScript基础入门之JSX(二) 属性类型检查 键入检查属性的第一步是确定元素属性类型。 内在元素和基于价值的元素之间略有不同。 对于内部元素,它是JSX.IntrinsicElements上的属性类型...

durban
今天
1
0
AVA中CAS-ABA的问题解决方案AtomicStampedReference

了解CAS(Compare-And-Swap) CAS即对比交换,它在保证数据原子性的前提下尽可能的减少了锁的使用,很多编程语言或者系统实现上都大量的使用了CAS。 JAVA中CAS的实现 JAVA中的cas主要使用的是...

码代码的小司机
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部