java中Map和List初始化的N種方法總結(jié)
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"); ?
第二種方法(雙括號初始化法)
又叫匿名內(nèi)部類初始化法,會產(chǎn)生大量的匿名內(nèi)部類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創(chuàng)建并初始化,但是注意創(chuàng)建的是不可變集合
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的相互轉(zhuǎn)換方法初始化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小技巧(指定容量+匿名內(nèi)部類初始化)
在初始化Map和List時,可以手動指定其容量,然后按照匿名內(nèi)部類這種方式初始化數(shù)據(jù),代碼看起來會很清爽。
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"); }};
在已經(jīng)知道容量大小的情況下,指定容量會減小開銷。
外層“{}”創(chuàng)建了一個匿名子類,內(nèi)層“{}”創(chuàng)建了一個對象構(gòu)造塊。
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
30分鐘入門Java8之lambda表達式學(xué)習(xí)
本篇文章主要介紹了30分鐘入門Java8之lambda表達式學(xué)習(xí),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-04-04springboot中websocket簡單實現(xiàn)
本文主要介紹了springboot中websocket簡單實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-01-01解決SpringBoot配置文件application.yml遇到的坑
這篇文章主要介紹了解決SpringBoot配置文件application.yml遇到的坑,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-02-02Spring Boot中整合Spring Security并自定義驗證代碼實例
本篇文章主要介紹了Spring Boot中整合Spring Security并自定義驗證代碼實例,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-04-04SpringBoot定時任務(wù)參數(shù)運行代碼實例解析
這篇文章主要介紹了SpringBoot定時任務(wù)運行代碼實例解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-06-06