關於Arrays類中toArray方法的總結
學了差不多兩年的Java,陣列類Arrays應該是我最常用到的類之一了,在整個學習的過程中,會更常用到一個方法,那就是toArray方法,因為將Collections型別的集合轉化為陣列後,將會更容易進行輸出,個單個的便利迴圈處理:但是這個方法有幾個特別需要注意的地方,希望對後來的初學者有些作用,也希望大家批評指正!
首先看一下下列的程式碼:
importjava.util.ArrayList;
import java.util.List;
public class Test {
public static void main(String[]args) {
List list = new ArrayList();
list.add("1");
list.add("2");
String[] tt =(String[])list.toArray(new String[0]);
}
}
這段程式碼是沒問題的,但我們看到String[] tt =(String[]) list.toArray(newString[0])中的引數很奇怪,然而去掉這個引數new String[0]卻在執行時報錯,其實oArray有兩個方法:
public Object[] toArray() {
Object[] result = newObject[size];
System.arraycopy(elementData, 0,result, 0, size);
return result;
}
不帶引數的toArray方法,是構造的一個Object陣列,然後進行資料拷貝,此時進行轉型就會產生ClassCastException,這也就是上述問題的rootcause了。
public Object[] toArray(Objecta[]) {
if (a.length < size)
a =(Object[])java.lang.reflect.Array.newInstance(a.getClass().getComponentType(),size); System.arraycopy(elementData,
0, a,0, size);
if (a.length > size)
a[size] = null;
return a;
}
而帶引數的toArray方法,則是根據引數陣列的型別,構造了一個對應型別的,長度跟ArrayList的size一致的空陣列,雖然方法本身還是以Object陣列的形式返回結果,不過由於構造陣列使用的ComponentType跟需要轉型的ComponentType一致,就不會產生轉型異常。
相關推薦
關於Arrays類中toArray方法的總結
學了差不多兩年的Java,陣列類Arrays應該是我最常用到的類之一了,在整個學習的過程中,會更常用到一個方法,那就是toArray方法,因為將Collections型別的集合轉化為陣列後,將會
利用Arrays類中的方法對陣列進行排序
package com.hongdou.java; import java.util.Arrays; public class MathDemo { public static void ma
ArrayList類中的toArray()與Arrays類中的toArray()方法注意問題
1.Arrays類是一個 final 類,其類中含有一個私有的 ArrayList, ArrayList的定義與 java.util.ArrayList中的定義相同。 java原始碼: pu
java中Arrays類中,binarySearch()方法的返回值問題
.cn pac rom 第一個 mage sea div arch x11 最近在復習Java知識,發現果然不經常使用忘得非常快。。。 看到binarySearch()方法的使用時,發現書上有點錯誤,於是就自己上機實驗了一下,最後總結一下該方法的返回值。 總結:bina
在Pandas中更改列的數據類型【方法總結】
efi 單獨 推斷 浮點 強制 The 時間 title 其中 先看一個非常簡單的例子: a = [[‘a‘, ‘1.2‘, ‘4.2‘], [‘b‘, ‘70‘, ‘0.03‘], [‘x‘, ‘5‘, ‘0‘]] df = pd.DataFrame(a) 有什麽
java 中的 Arrays 類的主要方法和屬性說明
java 中的 Arrays類的主要方法和屬性說明 Java提供的 Arrays類裡包含的一些static修飾的方法可以直接運算元組,這個 Arrays類裡包含了如下幾個 static修飾的方法( static修飾的方法可以直接通過類名呼叫) 返回值 函
個人總結之類 Arrays類的常用方法
此類包含用來運算元組binary Search(比如排序和搜尋)的各種方法。此類還包含一個允許將陣列作為列表來檢視的靜態工廠。 都是靜態方法,直接用類名Arrays呼叫。 比較常用的有:1.折半查詢法binarySearch2.拷貝陣列copyOf3.指定範圍複製陣列co
Java中Arrays類中的binarySearch方法詳解
1.它有很多過載的方法: static int 使用二分搜尋法來搜尋指定的 byte 型陣列,以獲得指定的值。 static int (byte[] a, int fromIndex, int toIndex, byte key) 使用二分搜尋法來搜尋指定的 byte
Arrays類中Arrays.asList()方法
Arrays類——Arrays.asList()方法使用 標籤: array arrays array.aslist java.util 類 Arrays java.lang.Object——java.util.Arrays public class Arrays ex
Iterator類中的方法next()如何用
find explain != itl mil void ash package args 這是一道比較簡單的詞典管理的題目,實現查詞,添加詞語,添加同義詞,查同義詞的功能,當然啦,用到Map(映射)! 1.這是JavaAPI文檔中對方法next()的簡單介紹,我遇到的問題
Java反射機制demo(五)—獲得並調用一個類中的方法
color 擁有 oca logs over super getmethod equals() bool 這個demo在使用反射機制操作屬性之前,主要原因是因為在.class文件字節碼中,方法排在屬性的前面。 1,獲得一個類中的方法 先看一下方法和運行結果。獲取所有的方
JavaSE8基礎 多態 子類沒有重寫 父類引用調用父類中的方法
win tca 訪問 子類 pub ava alt lease highlight os :windows7 x64 jdk:jdk-8u131-windows-x64 ide:Eclipse Oxygen Release (4.7.0)
Unity擴展GameObject等類中的方法
!= col images 封裝 troy get unity 有時 使用 有時我們想在添加組件時避免重復添加,就需要先把存在的組件刪除。於是寫出擴展方法封裝AddComponent。 public static class Assist { public
WebForm.aspx 頁面通過 AJAX 訪問WebForm.aspx.cs類中的方法,獲取數據(轉)
html ref doc tran jquery helper event query sender WebForm.aspx 頁面通過 AJAX 訪問WebForm.aspx.cs類中的方法,獲取數據 WebForm1.aspx 頁面 (原生AJAX請求,寫法一) &l
一個項目如何引用另一個項目中類中的方法
多種方法 技術 .com 目的 如何 同學 src .cn eight 這裏可能有多種方法,但是由於我是新手,暫且只會一種方法。 由於我用的是MAVEN來導入另一個項目。所以如果沒用到MAVEN的同學看到了我的這句話,基本上就可以不用往下看了
Object類中的方法
保持 rup clas throw second 我們 space hexstring sco 方法一 Object() 即Object的構造方法 Java中規定,每個類都有一個默認的無參構造器,此方法也就是用來體現這一特性方法二 registerNatives
Python 裝飾器裝飾類中的方法(轉)
some print raised blog python bject decorate pass div def catch_exception(origin_func): def wrapper(self, *args, **kwargs): try: u = orig
C#通過反射獲取類中的方法和參數個數,反射調用方法帶參數
new [] 反射 電腦 ram col sta body create using System; using System.Reflection; namespace ConsoleApp2 { class Program { sta
Scrapy(爬蟲框架)中,Spider類中parse()方法的工作機制
生成 工作 就會 ffffff 遞歸 賦值 () 其他 根據 parse(self,response):當請求url返回網頁沒有指定回調函數,默認的Request對象的回調函數,用來處理網頁返回的response,和生成的Item或者Request對象 以下分析一下pars
泛型方法或泛型類中的方法是內部調用、PInvoke 或是在 COM 導入類中定義的。
imp services != keys inter 解決 ade dex virt 泛型基類中引用Api函數定義時static extern,在子類中會提示: 未處理TypeLoadException 泛型方法或泛型類中的方法是內部調用、PInvoke 或是在 COM 導