`
yangyangmilan
  • 浏览: 29866 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

Map、List、Set的简洁初始化

阅读更多

Map map = new HashMap() {

    {

         put( "Name" , "Unmi" );

         put( "QQ" , "1125535" );

    }

}; 

 

List stooges = new ArrayList() {{

    add( "Larry" );

    add( "Moe" );

    add( "Curly" );

}}; 

 

Set<String> VALID_CODES = new HashSet<String>() {{  

       add("XZ13s");  

       add("AB21/X");  

       add("YYLEX");  

       add("AR2D");  

}};  

 

第一层括弧 实际是定义了一个内部匿名类 (Anonymous Inner Class),第二层括弧 实际上是一个实例初始化块 (instance initializer block),这个块在内部匿名类构造时被执行。这个块之所以被叫做“实例初始化块”是因为它们被定义在了一个类的实例范围内。这和“静态初始化块 (static initialzer)”不同,因为这种块在定义时在括弧前使用了static关键字,因此它的和类在同一个范围内的,也就是说当类加载时就会被执行。实例初始化块中可以使用其容器范围内的所有方法及变量,但特别需要注意的是实例初始化块是在构造器之前运行的。

这种方法只适用于不是final的类,因为final类是无法建立内部匿名子类,好在集合类都没有这个限制。因此,这种方法还可以被用来初始化其它任何对象。

分享到:
评论

相关推荐

    Java中List与Map初始化的一些写法

    Java的在还没有发现新写法之前时,我一直是这么初始化List跟Map: //初始化List List list = new ArrayList(); list.add("string1"); list.add("string2"); //some other list.add() code…… list.add(...

    6种方法初始化JAVA中的list集合

    在Java编程中,List集合是开发人员经常使用的一种数据结构,用于存储有序的元素列表。本文将详细介绍6种初始化Java List集合的方法,并通过代码示例帮助理解...在处理Map和Set集合时,也可以参考类似的方法进行初始化。

    Struts2 JSP中将list,set ,Map传递到Action然后<s:iterator>遍历(三十五)

    - 如果集合数据是从数据库中获取,需要确保在Action中进行正确的初始化和填充操作。 - 考虑到性能,避免在JSP中进行复杂的逻辑处理,尽量将业务逻辑放在Action中。 通过以上步骤,我们可以高效地在Struts2中处理...

    基于List, Set, Map, Integer, String, Tuple, Deque模块的C++库

    同时,库的API设计应遵循C++的RAII(资源获取即初始化)原则,确保内存管理的安全性。 总的来说,这个C++库将致力于提供一种Pythonic的编程体验,让开发者能够在C++中享受到Python容器的便利性,同时也充分利用C++...

    java面试宝典

    141、使用useBean标志初始化BEAN时如何接受初始化参数 36 142、使用JSP如何获得客户浏览器的信息? 36 143、能象调用子程序一样调用JSP吗? 36 144、当我重编译我的JSP使用的一个类后,为什么JVM继续使用我的老CLASS...

    Java-Java集合体系-List-Set

    ArrayList提供了多种构造方法,可以根据需求初始化容量。常见的操作包括添加元素(add),插入元素(add(int, E)),删除元素(remove),以及检查元素是否存在(contains)等。当数组容量不足时,ArrayList会自动扩容。在...

    在java中 利用匿名内部类进行较简洁的双括弧初始化的方法

    这种特性使得匿名内部类在某些特定情况下,比如初始化集合框架如Set、Map、List时,能提供更加简洁的代码。本文将深入探讨如何在Java中利用匿名内部类进行双括弧初始化的方法。 首先,让我们理解什么是匿名内部类。...

    JAVA中list,set,数组之间的转换详解

    另一个接受一个已初始化的目标数组,如果目标数组长度不够,会自动创建一个新的数组。例如,`list.toArray()`和`list.toArray(new String[0])`。 对于Map转换为Collection,可以直接使用`Map.values()`方法,它返回...

    Map转换成xml

    1. **初始化XML文档**:虽然示例代码中没有显示,但通常会在转换开始时添加XML声明,如`&lt;?xml version="1.0" encoding="UTF-8"?&gt;`。这定义了XML文档的版本和编码方式。 2. **递归处理Map**: - 首先,获取`Map`的...

    Java双括弧初始化操作技巧

    Java双括弧初始化是一种在Java编程中用于简化集合框架(如List、Set、Map等)对象的创建和初始化的技巧。这种技术通过创建一个匿名内部类,并在其内部使用实例初始化块来填充集合对象,从而提高了代码的简洁性和...

    cpp代码-标准模板STL初始化

    对于关联容器如set或map,可以这样初始化: ```cpp std::set&lt;int&gt; mySet = {1, 2, 3, 4, 5}; std::map, int&gt; myMap = {{"one", 1}, {"two", 2}, {"three", 3}}; ``` 2. **列表初始化**:在C++98/03中,可以...

    Kotlin 的算法集合

    2. 初始化集合:Kotlin 允许以多种方式初始化集合,例如使用 `listOf()`、`mutableListOf()`、`setOf()` 和 `mutableSetOf()` 等函数。 3. 集合类型:Kotlin 中的集合类型包括 List(有序集合,元素可重复)、Set...

    list链表实现技术

    1. **定义和初始化**: `list`容器可以通过模板类`std::list`来定义,它接受一个类型参数,表示存储的元素类型。例如,定义一个存储整数的链表: ```cpp std::list&lt;int&gt; myList; ``` 2. **插入操作**: - `...

    详解Java8合并两个Map中元素的正确姿势

    首先,让我们初始化两个Map实例。假设我们有一个`Employee`类,包含`id`和`name`属性,以及对应的getter和setter方法。创建`map1`和`map2`,并将一些`Employee`对象存入其中。值得注意的是,`map1`和`map2`中存在...

    C 语言通用 List 集合.zip

    在C语言中,由于其本身并不内置类似Java或Python中的集合框架,如List、Set、Map等,所以实现一个通用的List集合需要我们自己动手编写。这个"C 语言通用 List 集合.zip"文件可能包含了一个C语言实现的动态数组结构,...

    [Android实例] Android之解析XML文件

    public void setListMap(List&lt;Map, Object&gt;&gt; listMap) { this.listMap = listMap; } @Override public void startElement(String uri, String localName, String qName, Attributes attributes) throws ...

    Spring中的结合配置

    此外,使用`&lt;util:map&gt;`、`&lt;util:list&gt;`和`&lt;util:set&gt;`元素(引入了` xmlns:util="http://www.springframework.org/schema/util"`命名空间)可以提供更丰富的配置选项,如类型安全的注入和自定义初始化逻辑。...

Global site tag (gtag.js) - Google Analytics