collection.toArray(new String[0])中new String[0]的語法解釋
但是使用無引數的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
Java中String直接賦字符串和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 不等,
解決JavaScript中new Date(string)在IE不相容的問題
1.問題描述: let date = '2018.09.17' let dateStr = new Date(date); let year = dateStr.getFullYear(); l
論 java中String 和 new String還有物件中的String字串在記憶體中的儲存
一直以來,所有人都說,java中的String型別是不可變的,可是為什麼不可變確很少有人說的透徹,String和new String的區別,物件中的String和直接定義一個String是否有區別,一直都是一知半解。看了很多文件都是各種猜測,沒有具體程式碼來
String中new String(byte[] b, int n, int m)的理解
String item = new String(b, n, m)的用法,其中b為byte[]陣列,n,m為int型別. 簡單的來說就是byte陣列b從下標為n開始前進m個下標的那一段陣列變為字串it
java中new 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.0中Panel 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自動加0】new 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類,必須