1. 程式人生 > >陣列和ArrayList的區別及ArrayList的常用API的用法

陣列和ArrayList的區別及ArrayList的常用API的用法

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<>();//只能新增字串