亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Java將集合元素轉(zhuǎn)換為數(shù)組的三種方式

 更新時間:2025年11月06日 11:14:33   作者:Cache技術(shù)分享  
在實際開發(fā)中,雖然用集合來存儲元素通常更靈活,但有些場景下,我們?nèi)匀恍枰獙⒓限D(zhuǎn)換成數(shù)組,下面就來介紹一下Java將集合元素轉(zhuǎn)換為數(shù)組的三種方式,感興趣的可以了解一下

在實際開發(fā)中,雖然用集合(Collection)來存儲元素通常更靈活,但有些場景下,我們仍然需要將集合轉(zhuǎn)換成數(shù)組(比如與老舊 API 交互、需要固定大小存儲等)。

Java 的 Collection 接口提供了 三種方式 來實現(xiàn)這一點,都是通過 toArray() 方法的不同重載實現(xiàn)的。

?? 三種toArray()使用方式

方法返回特點
toArray()Object[]返回一個對象數(shù)組,不帶類型信息
toArray(T[] array)T[]返回一個指定類型的數(shù)組,需要傳入一個數(shù)組
toArray(IntFunction<T[]> generator)T[]使用構(gòu)造器引用創(chuàng)建數(shù)組,代碼更簡潔(JDK 8+)

1. ??? 使用無參toArray()

這種方式最簡單:直接調(diào)用 toArray(),返回的是一個 Object[] 類型的數(shù)組。

Collection<String> strings = List.of("one", "two", "three");

Object[] array = strings.toArray();

System.out.println(Arrays.toString(array));

??? 輸出結(jié)果

[one, two, three]

?? 注意: 這種方式得到的是 Object[],如果你強制轉(zhuǎn)換成 String[],可能會在運行時拋出異常ClassCastException)。 因此,一般不推薦在需要明確類型時使用這種方式。

2. ??? 使用帶數(shù)組參數(shù)的toArray(T[] array)

這種方式可以直接得到正確類型的數(shù)組,比如 String[],而且避免類型轉(zhuǎn)換出錯。

Collection<String> strings = List.of("one", "two");

// 方式1:傳入一個長度為0的數(shù)組
String[] result1 = strings.toArray(new String[0]);
System.out.println(Arrays.toString(result1));

// 方式2:傳入一個足夠大的數(shù)組
String[] largerArray = new String[5];
String[] result2 = strings.toArray(largerArray);
System.out.println(Arrays.toString(result2));

??? 輸出結(jié)果

[one, two]
[one, two, null, null, null]

? 背后細(xì)節(jié)解釋

  • 如果傳入的數(shù)組長度大于等于集合的大小,元素將被直接拷貝到這個數(shù)組中;
  • 如果傳入的數(shù)組長度小于集合的大小,Java會創(chuàng)建一個新數(shù)組,大小正好適配集合元素;
  • 如果數(shù)組比集合大,拷貝完元素后,第一個空余位置會設(shè)為 null剩下的位置保持原值。

?? 示例:傳入比集合大的數(shù)組

Collection<String> strings = List.of("one", "two");

String[] largerTab = {"old1", "old2", "old3", "old4"};
System.out.println("Before: " + Arrays.toString(largerTab));

String[] result = strings.toArray(largerTab);

System.out.println("After : " + Arrays.toString(result));
System.out.println("Same array? " + (result == largerTab));

??? 輸出結(jié)果

Before: [old1, old2, old3, old4]
After : [one, two, null, old4]
Same array? true

? 注意:返回的是傳入的原數(shù)組,而不是新建的數(shù)組!

3. ??? 使用toArray(IntFunction<T[]> generator)(推薦)

Java 11 開始,你可以使用構(gòu)造器引用(例如 String[]::new)來創(chuàng)建數(shù)組,更加優(yōu)雅、簡潔!

Collection<String> strings = List.of("one", "two", "three");

String[] array = strings.toArray(String[]::new);

System.out.println(Arrays.toString(array));

??? 輸出結(jié)果

[one, two, three]

?? 小結(jié)

方法優(yōu)點缺點
toArray()簡單直接只返回 Object[],需要小心類型
toArray(T[] array)返回指定類型,兼容老版本Java代碼稍長,需要處理數(shù)組長度
toArray(IntFunction<T[]> generator)代碼最簡潔,推薦(Java 11+)需要理解構(gòu)造器引用語法

到此這篇關(guān)于Java將集合元素轉(zhuǎn)換為數(shù)組的三種方式的文章就介紹到這了,更多相關(guān)Java 集合元素轉(zhuǎn)換為數(shù)組內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java toString方法重寫工具之ToStringBuilder案例詳解

    Java toString方法重寫工具之ToStringBuilder案例詳解

    這篇文章主要介紹了Java toString方法重寫工具之ToStringBuilder案例詳解,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • Java基礎(chǔ)教程之Map遍歷的5種方式

    Java基礎(chǔ)教程之Map遍歷的5種方式

    Map作為Java中的一種集合,以鍵值對的形式存放一批數(shù)據(jù),經(jīng)常會被我們應(yīng)用在項目中,這篇文章主要給大家介紹了關(guān)于Java基礎(chǔ)教程之Map遍歷的5種方式,需要的朋友可以參考下
    2024-01-01
  • Springboot?過濾器、攔截器、全局異常處理的方案處理小結(jié)

    Springboot?過濾器、攔截器、全局異常處理的方案處理小結(jié)

    攔截器是一種動態(tài)攔截方法調(diào)用的機(jī)制,與過濾器類似,是Spring框架中提供的,用來動態(tài)攔截控制器方法的執(zhí)行,這篇文章主要介紹了Springboot?過濾器、攔截器、全局異常處理,需要的朋友可以參考下
    2024-03-03
  • Java?Stream實現(xiàn)多字段分組groupingBy操作詳解

    Java?Stream實現(xiàn)多字段分組groupingBy操作詳解

    Stream是Java8的一個新特性,主要用戶集合數(shù)據(jù)的處理,如排序、過濾、去重等等功能,本文就來講講如何利用Stream實現(xiàn)比較優(yōu)雅的按多字段進(jìn)行分組groupingBy吧
    2023-06-06
  • spring boot jar的啟動原理解析

    spring boot jar的啟動原理解析

    這篇文章主要介紹了 spring boot jar的啟動原理分析,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2018-02-02
  • 解決常見的Eclipse SVN插件報錯方法詳解

    解決常見的Eclipse SVN插件報錯方法詳解

    本篇文章是對常見的Eclipse SVN插件報錯方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • SpringBoot?替換?if?的參數(shù)校驗示例代碼

    SpringBoot?替換?if?的參數(shù)校驗示例代碼

    Spring?Validation是對hibernate?validation的二次封裝,用于支持spring?mvc參數(shù)自動校驗,接下來,我們以spring-boot項目為例,介紹Spring?Validation的使用,需要的朋友可以參考下
    2022-12-12
  • Springboot集成restTemplate過程詳解

    Springboot集成restTemplate過程詳解

    這篇文章主要介紹了Springboot集成restTemplate過程詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-04-04
  • 將InputStream轉(zhuǎn)化為base64的實例

    將InputStream轉(zhuǎn)化為base64的實例

    這篇文章主要介紹了將InputStream轉(zhuǎn)化為base64的實例,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • 通過java備份恢復(fù)mysql數(shù)據(jù)庫的實現(xiàn)代碼

    通過java備份恢復(fù)mysql數(shù)據(jù)庫的實現(xiàn)代碼

    這篇文章主要介紹了如何通過java備份恢復(fù)mysql數(shù)據(jù)庫,其實一般情況下通過bat或sh就可以,這里主要是介紹了java的實現(xiàn)思路,喜歡的朋友可以參考下
    2013-09-09

最新評論