標籤:link osi index 優點 迭代 同步 shc 定義 ash
集合比數組的優勢:
1.集合可以存任意類型的變數,長度是可變的
2.數組只能存同一類型的變數,長度是固定的
3.集合中只能存對象
List集合 : 介面 提供公有的方法
特有的方法:
1.List中特有的方法都是通過下標來操作元素的
尋找:
add(int index,Object 0)添加元素到指定的位置
get(int index),擷取集合中指定位置的元素
Set(int index,object o),用來修飾集合中指定位置的元素的值
迭代器:
作用:操作集合中的元素,可以(增 , 刪 ,改 ,查)
根迭代器:Iterator 介面 集中擷取迭代器 : 通過集合中的方法擷取迭代器
collection 集合中擷取迭代器:Iterator();
迭代器中的方法:
hasNext();//判斷當前指標指向的位置是否有元素
next(); //擷取當前指標指向的元素,並且指標下移一位
remove(); //移除最後操作是指標指向的元素
ListIterator: 中的特有方法:
hasPrpvious();判斷當前指標指向的上一個位置是否存在元素
provious(); 擷取上一個元素
proviousIndex();擷取上一個元素所在的位置
add();在當前指標指向的位置添加一個元素
set();修改當前指標指向的元素
1.add和set不能同事使用
2.如果使用迭代器操作元素,那麼就不要用集合來操作元素
ArratList : 底層是維護一個Object[] 數組,預設的容量是10,如果容量不夠,增加為原來的1.5倍,
優點:尋找塊 ,增刪慢
trimToSize()。調整集合的容量和資料保持一致
ensureCapacity(int minCapacity)自訂容量
LinkedList :串連列表實現, 特點:添加元素比較快。尋找慢
LinkedList特有的方法:
方法介紹:
addFirst(E e)
addLast()
getLast()
removeFirst()
removeLast()
如果集合中沒有元素,擷取或者刪除元素拋:NoSuchElementException:沒有找到元素的異常
資料結構:
第一個方法 : List.push(“***”) //往集合的堆棧中推入一個值
System.out.println("從集合中堆棧中取出值:"+list.pop()); // 狗娃 移除push進去的對象 pop()取棧中最上面的對象
先進先出:
list.offer(“狗娃”);
System.out.printn(list.poll()); // 會將元素從集合中移除
擷取逆序的迭代器
descendingIterator()
返回以逆向順序在此雙端隊列的元素上進行迭代的迭代器。
eg: Iterator it= list.descendingIterator()
while(it.hasNext){
System.out.println(it); 反著列印出來
}
Vector : 描述的是一個安全執行緒的ArrayList 使用和ArrayList一樣 (只需瞭解)
vector 和 ArrayList 區別
相同點: 底層都是用object數組來實現的
不同點:
1.ArrarList是線程不同步,操作效率高, ArrayList是在jdk1.2出現的
2.Vector 線程是同步,操作效率低, 是在jdk1.0時候出現的
Set集合:也是一個介面,繼承collection介面,元素是無序的,不能用索引值來取值,不能 重複
hashSet 存值得一個原理:
首先會調用對象的hashCode方法擷取hashCode值,通過移位等運算擷取一個位置
情況1:如果位置上是沒有元素,直接將元素存放在該位置上
情況2:如果位置上已經有了元素,用對象的equals方法和位置上已經存在的對象比較,如果equals返回的是true那就代表是重複對象,就不存在,如果返回的是false將對象和原有的對象存在一起
想要遍曆Set集合:1.將集合變為數組,2.通過迭代器來遍曆(無序:添加的順序和列印出來的順序是不一樣的、)
Treeset:使用元素的自熱順序對元素進行排序,底層使用二叉樹來實現
Treeset使用注意點:
1.往TreeSet添加對象的時候,如果對象有這個自然排序的特性,就按照這個自然排序進行排序
2.往TreeSet添加對象的時候,如過對象本身不具備自然排序的特性,啟動並執行時候回報錯,如果需要儲存物件,那麼的對象的類必須要實現CompareTo介面 把元素的比較的規格定義在CompareTo方法中
3.往TreeSet添加對象的時候,如果對象本身不具備自然排序的特性,並且沒有實現Comparable 介面,那麼這個時候需要建立一個TreeSet的時候傳入一個比較子
比較子的定義方式:
class 類名 inplements Compartor{
}
4.如果類中實現了Comparable 介面,又在建立Treeset時傳入一個比較子,這個時候以比較子為標準。
java中的集合