陣列,集合(list,Arraylist)區別

2021-09-11 19:46:05 字數 1571 閱讀 9978

本人是一名大學生,在學校運用到i這類知識的時候,一般總是使用陣列,但是發現有很多問題陣列解決不了。但是其他兩種方式也不怎麼熟悉作用,也不會使用。三者經常不會區分,而是混為一談的記憶。所以接下來我會帶大家分析一下三者的區別以及作用。

一,首先我們先來看一下陣列

陣列優點是在記憶體中是連續儲存的,所以它的索引速度是非常的快,而且賦值與修改元素也很簡單.

比如:string s=new string[5];//定義初始化長度

s[0]=「1」; s[1]=「2」; s[2]=「3」;//賦值

s[1]=「1」;//修改

此時陣列資料為113;

陣列的缺點也是主要不用的原因就是陣列的長度不可以是動態的,陣列使用時必須定義它的長度,所以對於記憶體資源來說,定義是長度的長或短都是不行的。

二、集合arraylist

針對陣列的主要缺點,arraylist在宣告arraylist物件時並不需要指定它的長度。它的大小是按照其中儲存的資料來動態擴充與收縮的。arraylist繼承了ilist介面,所以它可以很方便的進行資料的新增,插入和移除.比如:

arraylist list = new arraylist();

//新增資料

list.add(「abc」); list.add(123);

//修改資料

list[2] = 345;

//移除資料

list.removeat(0);

//插入資料

list.insert(0, 「hello world」);

從arraylist來看,它已經彌補了陣列的主要缺點,但是它也有自己的缺點:

當向集合插入不同型別的資料後(arraylist將資料當作object儲存),如果需要同時處理集合中的資料時,必須將資料型別轉換處理,以及涉及到裝箱和拆箱的操作,也會造成不必要的資源浪費。

提到了裝箱與拆箱,以下簡單介紹一下:

裝箱:就是將資料型別打包儲存為object的引用物件。

比如:int a=1; object b=(object)a;

拆箱:就是將包裝好的資料物件,拆成自己想要的型別。

比如:object b=1; int i=(int)b;

三、泛型list

所以根據陣列,arraylist兩種缺點又繼續推出了泛型list集合。

優點:與集合arraylist類似且繼承ilist介面,也是動態擴容或縮容,在宣告list集合時必須宣告其中所要儲存的資料型別,且集合只能儲存相應型別,避免了型別轉換的問題。

例如:list list=new list();

list.add(123);

list[0]=111;//修改

list.removeat(0);//移除

如果list.add(「abc」);//編譯器就會報錯,避免了型別安全問題與裝箱拆箱的效能問題。

list泛型的好處:

通過允許指定泛型類或方法操作的特定型別,泛型功能將型別安全的任務從本身轉移給了編譯器,減少了自身對型別安全的檢測以及不必要的資源浪費。

總的來說,三者都是儲存資料的方式,需要自身根據對應情況,選擇適合自己的儲存方式,使**更效率,減少不必要的資源浪費。

集合與陣列

system.collections命名空間 c icollection d lists和ilist e 字典和idictionary f 雜湊表 g sortedlist h queue和stack 字典和idictionary idictionary擴充套件了icollection,但不表示可以...

陣列,字典,集合

1.nsstring 初始化方法 nsstring initwithformat d,a,b int a 1000 nsstring str1 nsstring alloc initwithformat zhangsan d a nsstring stringwithformat nsstring ...

Swift 陣列 集合

宣告 初始化 vararray003 string vararray0031 string varnewarray double count 4,repeatedvalue 1.1 建立特定大小和內容的陣列 或者array count 4,repeatedvalue 1.1 varintarr1 i...