java中Map和List初始化的N种方法总结

目录
  • Map和List初始化方法
    • 第一种方法(常用方法)
    • 第二种方法(双括号初始化法)
    • 第三种,stream初始化
  • 初始化Map和List小技巧(指定容量+匿名内部类初始化)
  • 总结

Map和List初始化方法

第一种方法(常用方法)

//初始化List  
List<string> list = new ArrayList<string><string>();  
list.add("string1");  
list.add("string2");  
list.add("stringN");  

//初始化Map  
Map</String , Object> map = new HashMap</String , Object>();  
map.put("key1", "value1");  
map.put("key2", "value2");  
map.put("keyN", "valueN");  

第二种方法(双括号初始化法)

又叫匿名内部类初始化法,会产生大量的匿名内部类class,不建议使用

//初始化List  
 List<string> list = new ArrayList<string>(){{  
     add("string1");  
     add("string2");  
     add("stringN");  
 }};  
  
 //初始化Map  
 Map</String , String> map = new HashMap</String , Object>(){{  
     put("key1", "value1");  
     put("key2", "value2");  
     put("keyN", "valueN");  
 }}; 

第三种,stream初始化

在Java9中可使用LIst.of Map.of Set.of创建并初始化,但是注意创建的是不可变集合

Map map = Stream.of(1,2,3,4).collect(Collectors.toMap(o -> o,integer -> integer,(o, o2) -> o2,HashMap::new));
       System.out.println(JSONObject.toJSONString(map));

List list = Stream.of(1,2,3,4).collect(Collectors.toList());
       System.out.println(JSONObject.toJSONString(list));

其他:

利用Array与ArrayList的相互转换方法初始化ArrayList,代码如下:

ArrayList<String> list = new ArrayList(Arrays.asList("Tom", "Jerry", "Mike"));  

利用Collections初始化

    List<Integer> useCases = new ArrayList<Integer>();
     Collections.addAll(useCases, 47, 48, 49, 50);

初始化Map和List小技巧(指定容量+匿名内部类初始化)

在初始化Map和List时,可以手动指定其容量,然后按照匿名内部类这种方式初始化数据,代码看起来会很清爽。

List<String> list = new ArrayList<String>(2) {{
    add("1");
    add("2");
}};

Map<String, Object> map = new HashMap<String, Object>(2) {{
    put("key1", "obj1");
    put("key2", "obj2");
}};

在已经知道容量大小的情况下,指定容量会减小开销。

外层“{}”创建了一个匿名子类,内层“{}”创建了一个对象构造块。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • Java高级之HashMap中的entrySet()方法使用

    目录 基本使用 原理剖析 总结 基本使用 entrySet()方法得到HashMap中各个键值对映射关系的集合. 然后Map.Entry中包含了getKey()和getValue()方法获取键和值. 示例: public class Demo { public static void main(String[] args) { Map<String, String> map = new HashMap<>(); map.put("abc", "123&

  • java中HashMap.values()转为ArrayList()问题

    目录 HashMap.values()转为ArrayList() map.values()转为List和ArrayList的复制 总结 HashMap.values()转为ArrayList() 由于HashMap.values()只能转为Collection集合所以需要转为ArrayList的话可以用一下代码 ArrayList<Integer> al = new ArrayList(hash.values()); map.values()转为List和ArrayList的复制 packag

  • Java中关于Map四种取值方式

    目录 Java关于Map的四种取值方式 map的主要作用是什么? Java中Map取值转String Null值处理 总结 Java关于Map的四种取值方式 map的主要作用是什么? 可以通过创建一个map的实现类 来存放 数据 值 和值的描述 也可以通过描述去取得数据 将键映射到值的对象.一个映射不能包含重复的键:每个键最多只能映射到一个值. 此接口取代 Dictionary 类,后者完全是一个抽象类,而不是一个接口. Map 接口提供三种collection 视图,允许以键集.值集或键-值映

  • Java中HashMap获取值的几种方式汇总

    目录 Java HashMap获取值的方式 Java HashMap基本用法 总结 Java HashMap获取值的方式 1.通过keySet()方法获取key的集合,因为在HashMap中key值不能重复,所以返回的是一个Set()类型. 2.通过entrySet()方法获取键值对的集合,再通过getKey()和getValue()方法获取key和value. 3.通过values()方法获取value集合,因为value可以重复,因此返回的类型为Collection. package com

  • Java之HashMap.values()转List时的错误和正确演示

    目录 HashMap.values()转List时的错误和正确演示 错误原因 解决方法 Map的Value值转换为List集合 总结 HashMap.values()转List时的错误和正确演示 因为项目中需要获取到Map的值的集合,所以调用了HashMap.values()方法转成List,当时是使用了以下代码. (逻辑上这样想应该没问题,但生活总是会是不是给你一点小“”惊喜“”) List<AreaItemOpt> areaItemOpts = (List<AreaItemOpt&g

  • java中Map和List初始化的N种方法总结

    目录 Map和List初始化方法 第一种方法(常用方法) 第二种方法(双括号初始化法) 第三种,stream初始化 初始化Map和List小技巧(指定容量+匿名内部类初始化) 总结 Map和List初始化方法 第一种方法(常用方法) //初始化List   List<string> list = new ArrayList<string><string>();   list.add("string1");   list.add("strin

  • Java中Map实现线程安全的3种方式

    目录 方式1. 使用Hashtable 方式2. 使用Collections.synchronizedMap(newHashtable()) 方式3. 使用ConcurrentHashMap 方式1.  使用Hashtable Map<String,Object> hashtable=new Hashtable<String,Object>(); 这是所有人最先想到的,那为什么它是线程安全的?那就看看它的源码,我们可以看出我们常用的put,get,containsKey等方法都是同

  • 详解在java中进行日期时间比较的4种方法

    1. Date.compareTo() java.util.Date提供了在Java中比较两个日期的经典方法compareTo(). 如果两个日期相等,则返回值为0. 如果Date在date参数之后,则返回值大于0. 如果Date在date参数之前,则返回值小于0. @Test void testDateCompare() throws ParseException { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");

  • 详解JAVA中获取文件MD5值的四种方法

    JAVA中获取文件MD5值的四种方法其实都很类似,因为核心都是通过JAVA自带的MessageDigest类来实现.获取文件MD5值主要分为三个步骤,第一步获取文件的byte信息,第二步通过MessageDigest类进行MD5加密,第三步转换成16进制的MD5码值.几种方法的不同点主要在第一步和第三步上.具体可以看下面的例子: 方法一. private final static String[] strHex = { "0", "1", "2"

  • Java中如何获取mysql连接的3种方法总结

    前言 本文主要来说说三种 Java 中获取 mysql 连接的方式,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍: 第一种:传统的连接方式: 第二种:读取配置文件方式: 第三种:数据库连接池. 一.传统的连接方式: 首先在 src 目录下创建名为 lib 的文件夹,导入数据库驱动的 jar 包,随后 "add to build path". 1.注册驱动 Class.forName("com.mysql.jdbc.Driver"); 2.获取连接 S

  • Java中保留两位小数的四种方法实现实例

    在写程序的时候,有时候可能需要设置小数的位数,那么java中有哪几种保留小数位数的方法呢?本文以两位小数为例给出四种方法. package CodeJava_Leet; import java.math.BigDecimal; import java.text.DecimalFormat; import java.text.NumberFormat; /** * Created by Yechengpeng on 2016-08-14. */ public class Test { public

  • java中实体类转Json的2种方法

    首先申明所需jar包: ezmorph-1.0.6.jar jackson-all-1.7.6.jar jsoup-1.5.2.jar 一.创建一个实体类Emp. package com.hyx.entity; public class Emp { private Integer id; private String name; private Integer dptNo; private String gender; private String duty; public Integer ge

  • 关于java中Map的九大问题分析

    通常来说,Map是一个由键值对组成的数据结构,且在集合中每个键是唯一的.下面就以K和V来代表键和值,来说明一下java中关于Map的九大问题. 0.将Map转换为List类型 在java中Map接口提供了三种集合获取方式:Key set,,value set, and key-value set..它们都可以通过构造方法或者addAll()方法来转换为List类型.下面代码就说明了如何从Map中构造ArrayList: // key list List keyList = new ArrayLi

  • 分析Java中Map的遍历性能问题

    一.引言 我们知道java HashMap的扩容是有成本的,为了减少扩容的次数和成本,可以给HashMap设置初始容量大小,如下所示: HashMap<string, integer=""> map0 = new HashMap<string, integer="">(100000); 但是在实际使用的过程中,发现性能不但没有提升,反而显著下降了!代码里对HashMap的操作也只有遍历了,看来是遍历出了问题,于是做了一番测试,得到如下结果:

  • Java中Map的遍历方法及性能测试

    1. 阐述 对于Java中Map的遍历方式,很多文章都推荐使用entrySet,认为其比keySet的效率高很多.理由是:entrySet方法一次拿到所有key和value的集合:而keySet拿到的只是key的集合,针对每个key,都要去Map中额外查找一次value,从而降低了总体效率.那么实际情况如何呢? 为了解遍历性能的真实差距,包括在遍历key+value.遍历key.遍历value等不同场景下的差异,我试着进行了一些对比测试. 2. 对比测试 一开始只进行了简单的测试,但结果却表明k

随机推荐