1. 程式人生 > >java容器之Array轉換List

java容器之Array轉換List

轉載請註明出處

作者:小馬


Array都不陌生,List 是一個介面。它代表著有序的佇列。ArrayList, LinkedList, Vector, Stack是List的4個實現類。這些類從名字也能猜出基本的用法,不多說。

java裡把普通陣列轉化為List有個專門的靜態方法,asList,使用示例如下:

public class ArraysToList 
{
	/**
	 * @param args
	 */
	public static void main(String[] args) 
	{
		// TODO Auto-generated method stub
		System.out.println(Arrays.asList(new String[] {"a","b"}));
		System.out.println(Arrays.asList(new Integer[] {1,2}));
		System.out.println(Arrays.asList(new int[] {1,2}));
		System.out.println(Arrays.asList(new String[] {"a","b"},"c"));
	}

}

輸出結果:

[a, b]
[1, 2]
[[[email protected]]
[[Ljava.lang.String;@757aef, c]

第1,2兩行的結果都如預期一般,但是3,4兩行就不對了。先說第3個,輸出的是個地址列表,問題出在哪?

要分析原因,先看看asList函式的宣告,

public static <T> List<T> asList(T... a)

它接受的是一個變長引數,T表示型別要是Object型別,前兩行程式碼,asList會認為分別傳入兩個object型別,然後它會處理好。但是int本身不是Object型別,那為什麼asList沒有編譯錯誤呢? 原因是int[] 是Object型別,所以對於第3行程式碼,asList把(new int[] {1,2})作為一個Object引數了

。就相當於

Arrays.asList(new Object[] {new int[] {1,2}})

 

同理可以知道第4行結果產生的原因了,至於解決方法,像上面這種情況,可以考慮把int轉化為Integer後再用asList。


素材來自ImportNew

相關推薦

java容器Array轉換List

轉載請註明出處 作者:小馬 Array都不陌生,List 是一個介面。它代表著有序的佇列。ArrayList, LinkedList, Vector, Stack是List的4個實現類。這些類從名字也能猜出基本的用法,不多說。 java裡把普通陣列轉化為List有

java陷阱Array.asList

private xpl clu arraylist clas ren call spa public List<Integer> numbers= Arrays.asList(new Integer[] {1,2,3}); numbers.ad

STL容器array

Array是C++11新增的一個模板類。 Array是一個固定大小且連續儲存的線性陣列。 因此它不能像其他容器那樣可以通過allocator來改變自身儲存容量。 Template parameters(模板引數): T:資料型別 N:指定Array儲存元素的數值。 Member fu

Java容器ArrayList原始碼總結

Java容器之ArrayList原始碼總結 本次學習基於JDK1.7版本,目的在於對常用的容器類進行深入學習,加深理解,以便工作中更好的使用。 容器基本概念 Java容器類類庫的用途是“儲存物件”,並劃分為兩個不同的概念: 1、Collection儲存單一的元素。 2、Map儲存

快學scalaArrayList、tuple模式匹配

object operate_match { def main(args: Array[String]) { // map match val map = Map("scala" -&

深入學習java原始碼 Array.newInstance()與Array.getLong()

深入學習java原始碼之 Array.newInstance()與Array.getLong() Array類提供靜態方法來動態建立和訪問Java陣列。  Array允許在獲取或設定操作期間擴大轉換,但如果發生縮小轉換,則丟擲IllegalArgumentException 。&nbs

java基礎遍歷list的不同方式

java基礎之遍歷list的不同方式 遍歷方式有以下幾種: 1、for迴圈遍歷:基於計數器,在集合的外部維護一個計數器,然後依次讀取每一個位置的元素,當讀到最後一個元素時停止。 2、迭代器遍歷:iterator是面向物件的一個設計模式,目前是遮蔽不同資料集和的特點,統一遍歷集合的介面

ScalaArrayList,Tuple,Set,Map

package com.scala.study /** * Created by Administrator on 2016/8/8. */ object Test { def max(x:Int,y:Int):Int={ if(x&g

java基礎數據類型轉換

() ont plain data int java基礎 lai 之間 font 一 基礎類型互轉   1.String與其它基礎類型互轉(此處普通基礎類型及對應包裝類用type、Type代替)     a. 轉String:String. valueOf(基礎變量)

Java並發--並發容器ConcurrentHashMap

替代 性能 新的 targe net 出現 float 分別是 unlock   下面這部分內容轉載自:   http://www.haogongju.net/art/2350374   JDK5中添加了新的concurrent包,相對同步容器而言,並發容器通過一些機制改進

Java並發--並發容器CopyOnWriteArrayList

數據 ice log 個人 one map 正在 jdk null 原文鏈接:http://ifeve.com/java-copy-on-write/     Copy-On-Write簡稱COW,是一種用於程序設計中的優化策略。其基本思路是,從一開始大家都在共享同一個內容

java基礎變量和常量、類型轉換

聲明 src .cn ble .com 不能 需要 bsp 字母 一、 變量 變量是可改變的量,每賦個值便會開辟一個新內存地址。 1、首先,變量需要一個聲明,例如:int a,這個a也可以當作是一個標簽,它指向了一個內存地址,這個地址是屬於int類型的套餐,可以通過

javajson轉換

ns-3 ng- exc jar prop 需要 order error: runtime 使用json常用到的包有以下六個。commons-logging-1.0.4.jar commons-lang-2.3.jar commons-collections-3.2.j

JavaArray(數組)說明

blog ava nis .com add body tps new lin 代碼說明: 1 package array; 2 3 import java.util.ArrayList; 4 import java.util.Arrays; 5 impor

java容器類分析:Collection,List,ArrayList

void 但是 exception 3.2 sin .html size hit parameter 1、 Iterable 與 Iterator Iterable 是個接口,實現此接口使集合對象可以通過叠代器遍歷自身元素. public interface Iterabl

JAVA並發容器CopyOnWrite容器

最終一致性 使用 當我 .com 比較 響應時間 get 理解 資源 學習資源:http://www.cnblogs.com/dolphin0520/p/3938914.html   CopyOnWrite容器即寫時復制的容器。通俗的理解是當我們往一個容器添加元素的時候,不

Java時間轉換

hmm mss CA 日期 24小時 null trac 簽名 mmd SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date date = sdf.parse("2

Java集合List常見操作

collect 定位 lastindex 索引 hot move 值對象 安排 ast 一.定義集合(Collection)是Java存儲對象常見的一種方式;集合中的各個對象最終存儲在類似數組[]中。那麽,為什麽有了數組還要用集合呢?因為,集合中的長度可變,所以不用一開始就

Java開發知識Java中的集合上List接口以及子類講解.

必須 元素 範圍 指向 指定 pub next 自己 什麽             Java開發知識之Java中的集合類 一丶什麽是集合類   如果你學習說數據結構,那麽學習集合就很簡單. 因為集合就是存儲數據的結構. 例如 有鏈表結構 (list ) 還有 map結構.等

『中級篇』dockerjava容器執行外接springboot-jar(番外篇)(79)

學了docker這麼久終於開始實戰了,所有部署方式全部使用docker的方式感覺特別爽,我這裡分享下,我部署springboot的富jar包。 下載java的映象 docker pull java:openjdk-8 spring boot 打包後的富jar 放入指定的目錄。