1)線性結構:(只有一個開始結點和一個終端結點)java
2)非線性結構:(一個結點有多個前驅結點和後繼結點)android
A: 集合:(元素之間的關係較爲鬆散) B: 線性結構:(元素之間存在嚴格的一對一的關係)算法
C: 樹形結構:(元素之將存在嚴格的一對多關係) D: 網狀結構: (元素之間存在多對多關係)數組
A:順序結構 B:鏈接結構 C:索引結構 D:散列結構安全
對JAVA的集合的理解是相對於數組。數組是大小固定的,而且同一個數組只能存放類型同樣的數據(基本類型/引用類型);JAVA集合能夠存儲和操做數目不固定的一組數據。數據結構
全部的JAVA集合都位於 java.util包中,JAVA集合只能存放引用類型的的數據,不能存放基本數據類型。多線程
Collection是最基本的集合接口,聲明瞭適用於JAVA集合(只包括Set和List,Map沒有)的通用方法。工具
存放的是對象的引用,沒有重複對象性能
Set set=new HashSet(); String s1=new String("hello"); String s2=s1; String s3=new String("world"); set.add(s1); set.add(s2); set.add(s3); System.out.println(set.size());//打印數目 爲 2。
Set 的 add()方法是如何判斷對象是否已經存放在集合中? spa
經過迭代器,遍歷比較。
最基本的兩種檢索集合中的全部對象的方法:
1: 用for循環和get()方法: 2: 使用 迭代器(Iterator): for(int i=0; I < size; i++){ Iterator it = list.iterator(); System.out.println(list.get(i)); while(it.hashNext){ } System.out.println(it.next); }
List接口下一共實現了三個類:ArrayList(Java1.2纔有),Vector(Java1.0就有),LinkedList。
ArrayList有三個構造方法:
public ArrayList(int initialCapacity) // 構造一個具備指定初始容量的空列表。 public ArrayList() // 構造一個初始容量爲10的空列表。 public ArrayList(Collection<? extends E> c) // 構造一個包含指定 collection 的元素的列表
Vector有四個構造方法:
public Vector() //使用指定的初始容量和等於零的容量增量構造一個空向量。 public Vector(int initialCapacity) //構造一個空向量,使其內部數據數組的大小,其標準容量增量爲零。 public Vector(Collection<? extends E> c) //構造一個包含指定 collection 中的元素的向量 public Vector(int initialCapacity,int capacityIncrement) //使用指定的初始容量和容量增量構造一個空的向量 /* Vector比Arraylist多一個構造方法,capacityIncrement就是容量增加,即增加因子,ArrayList中是沒有的。 擴容時,若是容量增量初始化的不是0,即便用的第四個構造方法進行的初始化,那麼擴容的容量就是原來的容量加上容量增量的值;若是沒有設置容量增量,那麼擴容後的容量就是原來容量的二倍。 */
是一種把鍵對象和值對象映射的集合,它的每個元素都包含一對鍵對象和值對象。
Map沒有繼承於Collection接口。從Map集合中檢索元素時,只要給出鍵,就會返回對應的值對象。
Map 的經常使用方法:
1 添加,刪除操做: put() remove( ) putAll(Map t) clear()
2 查詢操做: get(Object key): 得到與關鍵字key相關的值
Map集合中的鍵不容許重複,也就說,任意兩個鍵對象經過equals()方法比較的結果都是false。可是能夠將任意多個鍵獨享映射到同一個值對象上。
SparseArray是android提供的一個工具類,它能夠用來替代hashmap進行對象的存儲,其內部實現了一個矩陣壓縮算法,很適合存儲稀疏矩陣的。其內部實現了壓縮算法,能夠進行矩陣壓縮,大大減小了存儲空間,節約內存。此外它的查找算法是二分法,提升了查找的效率。
List按對象進入的順序保存對象,不作排序或編輯操做。Set對每一個對象只接受一次,並使用本身內部的排序方法(一般,你只關心某個元素是否屬於Set,而不關心它的順序--不然應該使用List)。Map一樣對每一個元素保存一份,但這是基於"鍵"的,Map也有內置的排序,於是不關心元素添加的順序。若是添加元素的順序對你很重要,應該使用 LinkedHashSet或者LinkedHashMap.