基于Java中的數(shù)值和集合詳解
數(shù)組array和集合的區(qū)別:
(1) 數(shù)值是大小固定的,同一數(shù)組只能存放一樣的數(shù)據(jù)。
(2) java集合可以存放不固定的一組數(shù)據(jù)
(3) 若程序事不知道究竟需要多少對象,需要在空間不足時自動擴(kuò)增容量,則需要使用容器類庫,array不適用
數(shù)組轉(zhuǎn)換為集合:
Arrays.asList(數(shù)組)
示例:
int[] arr = {1,3,4,6,6}; Arrays.asList(arr); for(int i=0;i<arr.length;i++){ System.out.println(arr[i]); }
集合轉(zhuǎn)換為數(shù)組:
集合.toArray();
示例:
List list = new ArrayList(); list.add("a"); list.add("b"); list.toArray(); System.out.println(list.toString());
一、集合的體系結(jié)構(gòu):
List、Set、Map是這個集合體系中最主要的三個接口。 List和Set繼承自Collection接口。 Map也屬于集合系統(tǒng),但和Collection接口不同。
Set不允許元素重復(fù)。HashSet和TreeSet是兩個主要的實現(xiàn)類。Set 只能通過游標(biāo)來取值,并且值是不能重復(fù)的。
List有序且允許元素重復(fù)。ArrayList、LinkedList和Vector是三個主要的實現(xiàn)類。 ArrayList 是線程不安全的, Vector 是線程安全的,這兩個類底層都是由數(shù)組實現(xiàn)的 LinkedList 是線程不安全的,底層是由鏈表實現(xiàn)的
Map 是鍵值對集合。其中key列就是一個集合,key不能重復(fù),但是value可以重復(fù)。 HashMap、TreeMap和Hashtable是Map的三個主要的實現(xiàn)類。 HashTable 是線程安全的,不能存儲 null 值 HashMap 不是線程安全的,可以存儲 null 值
二、List和ArrayList的區(qū)別
1.List是接口,List特性就是有序,會確保以一定的順序保存元素。
ArrayList是它的實現(xiàn)類,是一個用數(shù)組實現(xiàn)的List.
Map是接口,Map特性就是根據(jù)一個對象查找對象.
HashMap是它的實現(xiàn)類,HashMap用hash表實現(xiàn)的Map,就是利用對象的hashcode(hashcode()是Object的方法)進(jìn)行快速散列查找。(關(guān)于散列查找,可以參看<<數(shù)據(jù)結(jié)構(gòu)>>)
2.一般情況下,如果沒有必要,推薦代碼只同List,Map接口打交道。
比如:List list = new ArrayList();
這樣做的原因是list就相當(dāng)于是一個泛型的實現(xiàn),如果想改變list的類型,只需要:
List list = new LinkedList();//LinkedList也是List的實現(xiàn)類,也是ArrayList的兄弟類
這樣,就不需要修改其它代碼,這就是接口編程的優(yōu)雅之處.
另外的例子就是,在類的方法中,如下聲明:
private void doMyAction(List list){}
這樣這個方法能處理所有實現(xiàn)了List接口的類,一定程度上實現(xiàn)了泛型函數(shù).
3.如果開發(fā)的時候覺得ArrayList,HashMap的性能不能滿足你的需要,可以通過實現(xiàn)List,Map(或者Collection)來定制你的自定義類.
以上這篇基于Java中的數(shù)值和集合詳解就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
詳談Servlet和Filter的區(qū)別以及兩者在Struts2和Springmvc中的應(yīng)用
下面小編就為大家?guī)硪黄斦凷ervlet和Filter的區(qū)別以及兩者在Struts2和Springmvc中的應(yīng)用。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-08-08
詳解Java MyBatis 插入數(shù)據(jù)庫返回主鍵
這篇文章主要介紹了詳解Java MyBatis 插入數(shù)據(jù)庫返回主鍵,有興趣的可以了解一下。2017-01-01
Java正則表達(dá)式處理特殊字符轉(zhuǎn)義的方法
由于正則表達(dá)式定了一些特殊字符,而有時候需要對這些特殊字符進(jìn)行匹配的話就需要進(jìn)行轉(zhuǎn)義了,下面這篇文章主要給大家介紹了Java正則表達(dá)式處理特殊字符轉(zhuǎn)義的方法,需要的朋友可以參考借鑒,下面來一起看看吧。2017-01-01
spring boot+自定義 AOP 實現(xiàn)全局校驗的實例代碼
最近公司重構(gòu)項目,重構(gòu)為最熱的微服務(wù)框架 spring boot, 重構(gòu)的時候遇到幾個可以統(tǒng)一處理的問題。這篇文章主要介紹了spring boot+自定義 AOP 實現(xiàn)全局校驗 ,需要的朋友可以參考下2019-04-04
Spring 靜態(tài)變量/構(gòu)造函數(shù)注入失敗的解決方案
我們經(jīng)常會遇到一下問題:Spring對靜態(tài)變量的注入為空、在構(gòu)造函數(shù)中使用Spring容器中的Bean對象,得到的結(jié)果為空。不要擔(dān)心,本文將為大家介紹如何解決這些問題,跟隨小編來看看吧2021-11-11

