java基礎(chǔ)之初始化ArrayList時(shí)直接賦值的4種方式總結(jié)
在Java中,初始化ArrayList時(shí)直接賦值有以下幾種常見(jiàn)方式:
構(gòu)造器傳入集合:
List<String> list = new ArrayList<>(Arrays.asList("item1", "item2", "item3"));
或者在Java 9及以上版本中使用List.of()
方法創(chuàng)建不可變列表:
List<String> list = new ArrayList<>(List.of("item1", "item2", "item3"));
使用匿名內(nèi)部類(不常用且可能引起混淆,實(shí)際編程中很少這樣用):
// 不推薦此做法,僅作展示 ArrayList<String> list = new ArrayList<String>() {{ add("item1"); add("item2"); add("item3"); }};
注意:這種方式利用了匿名內(nèi)部類的實(shí)例初始化塊,但不是標(biāo)準(zhǔn)做法,因?yàn)樗`反了“面向接口”的編程原則,且可能導(dǎo)致代碼難以理解。
通過(guò)循環(huán)或流API填充:
// 循環(huán)添加 List<Integer> list = new ArrayList<>(); for (int i = 0; i < 5; i++) { list.add(i); } // Java 8+ 使用Stream API List<Integer> list2 = Stream.of(1, 2, 3, 4, 5).collect(Collectors.toCollection(ArrayList::new));
使用addAll方法:
List<Integer> initialData = Arrays.asList(1, 2, 3); List<Integer> list = new ArrayList<>(); list.addAll(initialData);
通常最常見(jiàn)的是方式一是直接在構(gòu)造ArrayList時(shí)傳入已有的集合,這種方式簡(jiǎn)潔高效。不過(guò),如果初始數(shù)據(jù)較小并且已知,直接在聲明時(shí)初始化也是最佳實(shí)踐之一。對(duì)于較大的數(shù)據(jù)集或者動(dòng)態(tài)生成的數(shù)據(jù),使用循環(huán)或流API則更為靈活。
附:ArrayList兩個(gè)對(duì)象之間的賦值
List<String> list1 = new ArrayList<String>(); List<String> list2 = new ArrayList<String>(); list1 = list2;
這種方法只是將list2的地址賦值給了list1。也就是list1的地址指向了list2的地址,也就是兩個(gè)list相當(dāng)于一個(gè)list,因?yàn)樗麄冎赶蛄送粋€(gè)地址值。而原來(lái)的list1的原先對(duì)象會(huì)被垃圾回收機(jī)制回收掉。
正確的賦值方法是:
List <String> list1 = new ArrayList<String>(); //方法一:利用集合自帶的構(gòu)造方法 List<String> list2= new ArrayList<String>(list1); //方法二:利用克隆的方法進(jìn)行賦值 List<String> list2 =(ArrayList<String>) list1.clone();
總結(jié)
到此這篇關(guān)于java基礎(chǔ)之初始化ArrayList時(shí)直接賦值的4種方式的文章就介紹到這了,更多相關(guān)java初始化ArrayList時(shí)直接賦值內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
SpringSecurity請(qǐng)求授權(quán)規(guī)則配置與注解詳解
這篇文章主要介紹了SpringSecurity請(qǐng)求授權(quán)規(guī)則配置與注解詳解,我們常使用@Secured與@PreAuthorize兩個(gè)注解在進(jìn)入方法前進(jìn)行角色、權(quán)限的控制,進(jìn)入方法前數(shù)據(jù)的過(guò)濾@PreFilter注解偶爾會(huì)看到,需要的朋友可以參考下2023-12-12Hibernate延遲加載原理與實(shí)現(xiàn)方法
這篇文章主要介紹了Hibernate延遲加載原理與實(shí)現(xiàn)方法,較為詳細(xì)的分析了Hibernate延遲加載的概念,原理與相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2016-03-03SpringBoot+Vue實(shí)現(xiàn)動(dòng)態(tài)菜單的思路梳理
這篇文章主要為大家詳細(xì)介紹了利用SpringBoot+Vue實(shí)現(xiàn)動(dòng)態(tài)菜單的思路梳理,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以動(dòng)手嘗試一下2022-07-07Java將科學(xué)計(jì)數(shù)法數(shù)據(jù)轉(zhuǎn)為字符串的實(shí)例
下面小編就為大家?guī)?lái)一篇Java將科學(xué)計(jì)數(shù)法數(shù)據(jù)轉(zhuǎn)為字符串的實(shí)例。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-12-12Java8新特性之接口中的默認(rèn)方法和靜態(tài)方法詳解
今天帶大家學(xué)習(xí)的是Java8新特性的相關(guān)知識(shí),文章圍繞著Java接口中的默認(rèn)方法和靜態(tài)方法展開(kāi),文中有非常詳細(xì)的的代碼示例,需要的朋友可以參考下2021-06-06springboot中使用ConstraintValidatorContext驗(yàn)證兩個(gè)字段內(nèi)容相同
開(kāi)發(fā)修改密碼功能時(shí),通過(guò)ConstraintValidator校驗(yàn)新密碼和確認(rèn)新密碼的一致性,首先定義Matches注解和DTO對(duì)象,然后創(chuàng)建MatchesValidator類實(shí)現(xiàn)驗(yàn)證邏輯,對(duì)springboot驗(yàn)證字段內(nèi)容相同問(wèn)題感興趣的朋友一起看看吧2024-10-10Mybatis-Plus進(jìn)階分頁(yè)與樂(lè)觀鎖插件及通用枚舉和多數(shù)據(jù)源詳解
這篇文章主要介紹了Mybatis-Plus的分頁(yè)插件與樂(lè)觀鎖插件還有通用枚舉和多數(shù)據(jù)源的相關(guān)介紹,文中代碼附有詳細(xì)的注釋,感興趣的朋友來(lái)看看吧2022-03-03