一、數組與集合的對比
- 數組:可以存儲基本數據類型和對象,數組的長度固定,不適合在對象數量未知的情況下使用。
- 集合:只能存儲對象,對象類型可以不一樣,長度可變,可在多數情況下使用。
二、數組
1. 數組概述
- 數組是多個相同類型數據的組合,實現對這些數據的統一管理
- 數組屬於引用類型,數組型數據是對象(Object),數組中的每個元素相當於該對象的成員變量
- 數組中的元素可以是任何數據類型,包括基本類型和引用類型
2. 數組的聲明和賦值
2.1 數組的聲明方式:
type var[] //或 type[] var;
2.2 賦值語法:
基本類型的數組有三種賦值形式,如下所示:
int[] arr = {1,2,3}; //方式一 int[] arr = new int[]{1,2,3}; //方式二
int[] arr = new int[3]; //方式三
arr[0]=1;
arr[1]=2;
arr[2]=3;
2.3 注意事項:
- · 聲明數組時不能指定其長度,例如:int a[5] //非法
- · 不能在給定初始值的同時還給定長度,例如:
int[] arr = new int[3]{1,2,3} //編譯報錯
3. 數組元素的引用
4. 數組元素的默認值
5. 多維數組
Java中多維數組不必須是規則矩陣形式
//創建一個4行不等列的二維數據 int[][] tt = new int[4][]; tt[0] = new int[2]; tt[1] = new int[4]; tt[2] = new int[6]; tt[3] = new int[8]; //創建一個4行5列的二維數據 int[][] tt2 = new int[4][];
三、集合
1. 集合框架圖
如圖所示:實線邊框的是實現類,折線邊框的是抽象類,而點線邊框的是接口
- Collection接口:是集合類的根接口,Java中沒有提供這個接口的直接的實現類。但是卻讓其被繼承產生了兩個接口,就是Set和List。Set中不能包含重復的元素。List是一個有序的集合,可以包含重復的元素,提供了按索引訪問的方式。
- Map:Java.util包中的另一個接口,它和Collection接口沒有關系,是相互獨立的,但是都屬於集合類的一部分。Map包含了key-value對。Map不能包含重復的key,但是可以包含相同的value。
- Iterator:所有的集合類,都實現了Iterator接口,這是一個用於遍歷集合中元素的接口,主要包含以下三種方法:
1.hasNext()是否還有下一個元素。
2.next()返回下一個元素。
3.remove()刪除當前元素。
2. List、Set、Map介紹及對比
1、List(有序、可重復、允許存在多個null元素)
List里存放的對象是有序的,同時也是可以重復的,List關注的是索引,擁有一系列和索引相關的方法,查詢速度快。因為往list集合里插入或刪除數據時,會伴隨着后面數據的移動,所有插入刪除數據速度慢。
2、Set(無序、不能重復、只允許存在一個null元素)
Set里存放的對象是無序,不能重復的,集合中的對象不按特定的方式排序,只是簡單地把對象加入集合中。
3、Map(鍵值對、鍵唯一、值不唯一、只允許存在一個Key為null元素 )
Map集合中存儲的是鍵值對,鍵不能重復,值可以重復。根據鍵得到值,對map集合遍歷時先得到鍵的set集合,對set集合進行遍歷,得到相應的值。
4. 對比如下: