1. 程式人生 > >collection.toArray(new String[0])中new String[0]的語法解釋

collection.toArray(new String[0])中new String[0]的語法解釋

Collection的公有方法中,toArray()是比較重要的一個。
但是使用無引數的toArray()有一個缺點,就是轉換後的陣列型別是Object[]。 雖然Object陣列也不是不能用,但當你真的想用一個具體型別的陣列,比如String[]時,問題就來了。而把Object[]給cast成String[]還是很麻煩的,需要用到這個:

String[] stringArray = Arrays.copyOf(objectArray, objectArray.length, String[].class);

不管是從哪方面看還是一開始就弄成String[]比較好。

具體怎麼辦呢?其實用帶引數的toArray就好了。官方是這樣給出的例子:

String[] a = c.toArray(new String[0]);

像 toArray 方法一樣,此方法充當了基於陣列的 API 與基於 collection 的 API 之間的橋樑。更進一步說,此方法允許在輸出陣列的執行時型別上進行精確控制,並且在某些情況下,可以用來節省分配開銷。

假定 l 是隻包含字串的一個已知 List。以下程式碼用來將該列表轉儲到一個新分配的 String 陣列: 

     String[] x = (String[]) v.toArray(new String[0]);
 注意,toArray(new Object[0]) 和 toArray() 在功能上是相同的。


<T> T[] toArray(T[] a);
泛型
會返回你一個list長度的String 型別的陣列

需要一個T[] a,new String[0]相當於開闢了一個長度為0的String[],並且指定了泛型。這樣函式的呼叫是將list轉換了一個String的陣列。

這裡的用new String[0]只是為了指定函式的形引數,最終返回的String[]的長度是由你的list儲存內容的長度決定了。

new String[0]就是起一個模板的作用,指定了返回陣列的型別,0是為了節省空間,因為它只是為了說明返回的型別

ArrayList.toArray()需要返回String [] “串物件陣列” 型別,


要求呼叫引數也必須是 “串物件陣列”,
new String[] 就是生生一個“串物件陣列”,[0]表示元素個數為零。

只是 一個型別標示,用來告訴toArray方法具體轉化成什麼型別。
list.toArray(new String[0]);//轉化成String陣列

list.toArray(new int[0]);//轉化成int陣列

相關推薦

collection.toArray(new String[0])new String[0]的語法解釋

Collection的公有方法中,toArray()是比較重要的一個。但是使用無引數的toArray()有一個缺點,就是轉換後的陣列型別是Object[]。 雖然Object陣列也不是不能用,但當你真的想用一個具體型別的陣列,比如String[]時,問題就來了。而把Obje

JavaString直接賦字符串和new String的區別 如String str=new String("a")和String str = "a"有什麽區別?

this his The tin ase name ++ 常量池 TE 百度的面試官問 String A="ABC"; String B=new String("ABC"); 這兩個值,A,B 是否相等,如果都往HashSet裏面放,能放下嗎? 答:A==B 不等,

解決JavaScriptnew Date(string)在IE不相容的問題

1.問題描述: let date = '2018.09.17' let dateStr = new Date(date); let year = dateStr.getFullYear(); l

論 javaStringnew String還有物件String字串在記憶體的儲存

一直以來,所有人都說,java中的String型別是不可變的,可是為什麼不可變確很少有人說的透徹,String和new String的區別,物件中的String和直接定義一個String是否有區別,一直都是一知半解。看了很多文件都是各種猜測,沒有具體程式碼來

Stringnew String(byte[] b, int n, int m)的理解

String item = new String(b, n, m)的用法,其中b為byte[]陣列,n,m為int型別. 簡單的來說就是byte陣列b從下標為n開始前進m個下標的那一段陣列變為字串it

javanew String(str.getBytes(“utf-8”),“iso-8859-1”)編碼詳解

前提是str存放的是漢字一、如果是new String(str.getBytes(“gbk”),“gbk”)時,可以分為兩步:      第一步:byte[] bytes=str.getBytes(“gbk”)        告訴java虛擬機器將中文以“gbk”的方式轉換為

InputStream轉換為String, byte[] data = new byte[1024]詳解

() gpo ring copyright create import number rgs write /** * This file created at 2018年2月28日. * * Copyright (c) 2002-2018 Bingosoft, In

Gson 使用new TypeToken<List<String>>(){}.getType() 為什麽有 {}?

而已 內部類 希望 真的 指南 不能 article 匿名內部類 作用 前言:使用 gson 時,不明白為什麽有這種寫法:new TypeToken<List<String>>(){}.getType(),所以來解惑。最終發現其實就是自己的 jav

淺談String str = "" 和 new String()的區別

關於String類的知識經常出現在面試題中,在此先記錄自己的理解。 首先明白一個事,java存在一個常量池,可以用來儲存字串常量。 1 建立的字串變數在記憶體中的區別 兩者看似都是建立了一個字串物件,但在記憶體中確是各有各的想法。 String str1= “abc”

關於String str1="123"與String str2=new String("123")類問題詳解

要徹底弄明白這個問題,我們需要清楚一些基本概念:Class檔案中的常量池,執行時常量池(runtime constant pool),全域性字串常量池(StringTable),Java heap,一些常用位元組碼以及常量池中的常量型別等jvm的知識: Class檔案常量

String a = "abc";和String b = new String("abc")建立物件

String a = "abc"; 首先會在棧中建立一個對String類物件的引用變數a,然後去查詢字串常量池中是否有"abc"。如果有,會把a指向這個物件的地址。如果字串常量池中沒有"abc",則在棧中建立三個char型的值'a','b','c',然後在堆中建立一個Stri

Java--泛型理解和使用 (List<String> list = new ArrayList<String>(); )

List<String> list = new ArrayList<String>(); 第一次看到這行程式碼是一頭霧水,查了好久才弄清楚這是什麼東西,怎麼用,所以記錄下來,方便以後查閱。   首先看一段程式碼 public class Gener

AR HUD 1.0Panel Navi Guide和Panel New Route動畫關鍵幀總結

一、Panel Navi Guide面板導航指南1、   Panel Navi Guide:Anchored Position  父物件錨點位置   Image Navi Guide Distance Corner Mask:Anchored Position  往角落金吉路

thrift TSocket read 0 bytes(string型別的一個坑)

最近把thrif從0.9版本升級到0.10版本之後,一些一直在報thrift TSocket read 0 bytes 錯誤。 此篇文章記錄thrift中的一個坑。 從thrift的官方文件中可以知道,如下: Base Types The b

關於String str1 = "123" 和 String str2 = new String("123")記憶體分析

最近在自學java基礎,由於嵌入式以後的就業前景不是很好,加上自己本學期學習了51單片機發現自己對硬體不是很在行,可能是因為初中以來物理一直不是很好吧,導致自己現在一看到電路板,電壓電阻電流都會產生一種恐懼感,就像大三現在的我對與資料結構也有一種畏難情緒(不願意花很多時間去

String str="abc" 與 String str = new String("abc");詳解

1.java執行環境有一個字串池,由String類維護,執行語句String str="abc"時:                                                                                       

String s3 = "hel" + new String("lo");做了什麼

String s3 = "hel" + new String("lo");底層到底是如何執行的呢?寫個程式,用eclipse做debug可以得到詳細的執行的順序1 load StringBuilder類2 生成臨時變數StringBuilder,儲存"hel"字串3 執行St

JavaScript獲取時間【時間顯示不到10自動加0new Date()_年月日時分秒

JS獲取當前時間戳的方法-JavaScript 獲取當前毫秒時間戳有以下三種方法: var timestamp =Date.parse(new Date());    結果:1280977330000       //不推薦; 毫秒改成了000顯示 var timestamp =(new Date()

Java實現String.padLeft和String.padRight

toc 還要 color for 失去 1-1 arraycopy ace pre 因為習慣了C#中的padLeft和padRight,接觸Java後突然失去這兩個功能,覺得別扭,就試著實現了這兩個方法。 Java中String.format()中帶有字符串對齊功能如下

標準C++string

resize mage char namespace 第一個字符 運算符 工程目錄 允許 第一個 轉自http://www.cnblogs.com/xFreedom/archive/2011/05/16/2048037.html 要想使用標準C++中string類,必須