數組和集合的區別及深入了解


一、什么是數組

數組:Java提供了一個用於存儲相同類型的元素的固定大小的連續集合數據結構。本質還是一個對象,繼承自Object。

數組是用於存儲數據的集合,儲存相同類型數據的集合。

與單個變量相比(如number0, number1 … number99),數組變量需要使用下標索引來確定數組中某個數據的順序(如numbers[0], numbers1 … numbers[99] )。

  數組按照使用可以分為一維數組、二維數組、多維數組

數組的定義   int[] i=new int[5];     int i []=new int[5];

二、什么是集合

集合:存放的都是對象的引用,而非對象本身,出於表達上的便利,我們稱集合中的對象就是指集合中對象的引用(reference)。
集合類型主要有3種:set(集)、list(列表)和map(映射)。 通俗的說,集合就是一個放數據的容器,准確的說是放數據對象引用的容器。

 

 

 

Java SDK不提供直接繼承自Collection的類,java SDK提供的類都是繼承自Collection的“子接口”如List和Set。

 

不論Collection的實際類型如何,它都支持一個iterator()的方法,該方法返回一個迭代子,使用該迭代子即可逐一訪問Collection中每一個元素。典型的用法如下:
    Iterator it = collection.iterator(); // 獲得一個迭代子
    while(it.hasNext()) {
      Object obj = it.next(); // 得到下一個元素
    

 

Linked 改快讀慢

Array 讀快改慢

Hash 兩都之間

 

Collection是集合接口
    |————Set子接口:無序,不允許重復。
    |————List子接口:有序,可以有重復元素。

    區別:Collections是集合類

    SetList對比:
    Set:檢索元素效率低下,刪除和插入效率高,插入和刪除不會引起元素位置改變。
    List:和數組類似,List可以動態增長,查找元素效率高,插入刪除元素效率低,因為會引起其他元素位置改變。

 

    SetList具體子類:
    Set
     |————HashSet:以哈希表的形式存放元素,插入刪除速度很快。

    List
     |————ArrayList:動態數組
     |————LinkedList:鏈表、隊列、堆棧。

 

    Arrayjava.util.Vector
    Vector是一種老的動態數組,是線程同步的,效率很低,一般不贊成使用。

 

一、collectionMap,  collectioncollections 區別

 Collection java集合框架的一個頂級接口,存儲的元素是任意類型的對象。

Mapjava集合的映射接口,以鍵值對的形式存儲對象。

Collections  java集合框架的一個工具類,定義了若干個靜態方法,對集合對象進行操作。

二、ArrayList LinkedList  ,ArraylistVector 區別

都是List的實現類,主要區別是底層的數據結構不同

ArrayList 相當於一個動態數組 ,需要隨機訪問列表中的元素,ArrayList的性能更高

LinkedList 鏈表式數據結構,當需要頻繁的插入,刪除列表中的元素時,性能高

 

ArraylistVector方法幾乎相同,都是List的實現類。

Arraylist 是在jdk1.2時增加的, vector 是在jdk1.0增加的。

vector 線程同步,(同一時刻只能有一個線程訪問)

ArrayList  線程不同步,可以使用 collections.synchronizedList方法實現線程同步

 List list=collections.synchronizedList(new arrayList())

 

Hashtable HashMap 區別 ,HashsettreeSet區別

Hashtable JDK1.0中的類,JDK1.2實現map接口,

HashMapJDK1.2中新增的類,實現Map接口

Hashtable 線程同步 ,HashMap不同步,可以使用Collections.synchronizedMap()變成線程同步

Hashtable  key value值都不能空

HashMap 可以有一個空的key值,多個空的value

 

HashsettreeSet區別

都是set的實現類,保證元素的唯一性不重復

TreeSet能將元素按升序排列

 

Set List的區別

都是Collection的子接口,

Set中元素不重復,且無須,

List中元素可以重復 且有序

 

三、數組和集合的優缺點

Array可以包含基本類型和對象類型,ArrayList只能包含對象類型
Array大小是固定的,ArrayList的大小是動態變化的。
ArrayList提供了更多的方法和特性,比如:addAll(),removeAll(),iterator()等等。
對於基本類型數據,集合使用自動裝箱來減少編碼工作量。但是,當處理固定大小的基本數據類型的時候,這種方式相對比較慢。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM