陣列和ArrayList的區別及ArrayList的常用API的用法
阿新 • • 發佈:2018-11-21
1.陣列
陣列在記憶體中是連續儲存的,優點是它的索引速度非常快,而且賦值與修改元素較快,不足是在陣列中插入資料比較麻煩,同時宣告陣列時應知名陣列的長度,若陣列長度過長會造成記憶體浪費,陣列長度過短,會造成資料溢位的錯誤。
1.1 例項:
string[] s=new string[2];
//賦值
s[0]="a"; s[1]="c";
//修改
s[1]="b";
2.ArrayList
ArrayList 是一個數組佇列,相當於動態陣列,在宣告ArrayList物件時並不需要指定它的長度。與Java中的陣列相比,它的容量能動態增長。它繼承AbstractList,實現了List, RandomAccess, Cloneable, java.io.Serializable這些介面。ArrayList 繼承了AbstractList,實現了List。它是一個數組佇列,提供了相關的新增、刪除、修改、遍歷等功能。
2.1 ArrayList常用API的用法例項:
package hashmap;
import java.util.*;
//ArrayList中常用的API用法
public class ArrayListTest {
public static void main(String[] args) {
//建立ArrayList
ArrayList list = new ArrayList();
//新增元素
list.add(1);
list.add("a");
list.add("b");
list.add("v");
list.add("d");
//在指定位置新增元素
list.add(0, 5);
System.out.println("the first element is:" + list.get(0));
//刪除3
list.remove("v");
//獲取ArrayList的大小
System.out.println("size=: " +list.size());
//判斷list中是否包含3
System.out.println("ArrayList contains 3 is : "+list.contains(3));
//設定第二個元素為10
list.set(1,"10");
//通過Iterator遍歷
for(Iterator iter = list.iterator(); iter.hasNext(); ) {
System.out.println("next is:" + iter.next());
}
//清空ArrayList
list.clear();
//判斷ArrayList是否為空
System.out.println("ArrayList is empty: " + list.isEmpty());
}
}
2.2 執行結果
2.3 拆箱與裝箱
在ArrayList中我們可以插入不同型別的陣列,如字串或者數字,因為其會把所有插入的資料當做object型別來處理。然而在插入和使用資料的時候,就存在裝箱與拆箱的操作,這回帶來很大的效能損耗。
所謂裝箱就是指:就是將值(或其他)型別的資料打包到引用型別的例項中,如下所示:
int i = 1;
object j = (object)i;
拆箱就是指:就是從引用資料中提取值(或其他)型別,如下所示:
object j = 1;
int i = (int)j;
在宣告ArrayList時,我們也可以指定存入資料的型別
ArrayList<String> list2 = new ArrayList<>();//只能新增字串