以前用C++常用{值1,值2}的方式直接给list和数组赋值,在Java中不支持,每次还总是忘记,于是记下Java中list和map赋值的几种方式:
1、list
list构造的五种方法及优缺点: https://www.jianshu.com/p/4c8c0e78061d
以下方法不推荐使用方法2,会存在效率问题
/**方式1:创建后用 add方法添加值**/
List<Integer> list0 = new ArrayList<Integer>();
list0.add(1);
list0.add(2);
/**方式2:在创建方法中直接采用add方法添加值**/
List<Integer> list1 = new ArrayList<Integer>(){
{
add(1);
add(2);
}
};
/**方式3: 深拷贝其他数组**/
List<Integer> list2 = new ArrayList<Integer>(list0);
/**方式4: 浅拷贝其他数组**/
List<Integer> list3 = list0;
/**测试**/
list0.add(3);
System.out.println("list0="+list0.toString());
System.out.println("list1="+list1.toString());
System.out.println("list2="+list2.toString());
System.out.println("list3="+list3.toString());
/**
* 结果:
* list0=[1, 2, 3]
* list1=[1, 2]
* list2=[1, 2]
* list3=[1, 2, 3]
*/
2、map
/**方式1:创建后用 put方法添加值**/
Map<String, Integer> map0 = new HashMap<String, Integer>();
map0.put("key1",1);
map0.put("key2",2);
/**方式2:在创建方法中直接采用put方法添加值 **/
Map<String, Integer> map1 = new HashMap<String, Integer>(){{
put("key1",1);
put("key2",2);
}};
/**方式3: 深拷贝其他map **/
Map<String, Integer> map2 = new HashMap<String, Integer>(map0);
/**方式4: 浅拷贝其他map **/
Map<String, Integer> map3=map0;
/** 测试**/
map0.put("key3",3);
System.out.println("map0="+map0.toString());
System.out.println("map1="+map1.toString());
System.out.println("map2="+map2.toString());
System.out.println("map3="+map3.toString());
/**
* 结果:
* map0={key1=1, key2=2, key3=3}
* map1={key1=1, key2=2}
* map2={key1=1, key2=2}
* map3={key1=1, key2=2, key3=3}
*/