對集合框架的一些概括總結之collection介面 子介面 子實現類
-------android培訓、java培訓、期待與您交流! --------
我發現集合框架就是方法多了點 亂了點 整理一下還是感覺挺簡單的
1. 先聊一聊為什麼出現集合類吧 因為呢面嚮物件語言對事物的體現都是以物件的形式,所以為了方便對多個物件的操作,就對物件進行儲存,集合就是儲存物件最常用的一種方式。2. 陣列也是用來儲存的容器那麼它跟集合有什麼區別呢 ?
陣列雖然能儲存物件, 但是它的長度是固定的 而集合的長度是可以改變的 陣列可以存放基本資料型別也可以存放物件 而集合呢只可以放物件
3.總結一下集合的特點吧
集合只用於儲存物件,集合長度是可變的,集合可以儲存不同型別的物件。 4. 集合類中的關係圖 如下:其實我們可以給他們拆分成兩大塊的
5.一個是collection接口裡面主要包括list和set兩個子介面其中list介面下面有兩個經常用的實現類LinkedList 和ArrayList
* 因為collection是介面所以只能通過子類來實現的
* list可存放重複元素,元素存取是有序的裡面存放的資料都是有序的 因為底層資料結構是陣列其中連結串列 底 層也是陣列
*set不可以存放重複元素,元素存取是無序的(你手寫的存入與打印出來的可能不一樣 它是根據hash值進行儲存的)
* 因為Collection這個介面繼承了Iterable<E>這個介面所以實現Collection介面的集合取出元素的方式都是 iterator() //返回在此 collection 的元素上進行迭代的迭代器。而這個迭代器是Iterable但是因為介面沒有構造所以返回的是它的子類物件
/*
* Iterator的使用:
*
* Collection中的iterator()返回的是一個Iterator.
* 記住:返回的其實是一個迭代器的子類物件.但是,你可以用Iterator這個介面來接收這個子類物件.多型.
*
* Iterator:
* 1:boolean hasNext()
如果仍有元素可以迭代,則返回 true。
2:Object next()
返回迭代的下一個元素。
NoSuchElementException 你已經取到最後一個元素了.你還繼續取元素,就會丟擲該異常.
*/
List除了實現collection介面的方法外 它還有特有的方法:
void add(int index ,E element) * 在列表的指定位置新增指定的元素
object get(int index) * 返回列表中指定位置的元素
int indextOf(object) * 返回指定元素第一次出現的索引
ListIterator<E> listIterator() * 列表迭代器 它可以逆向遍歷集合
object remove(int index) * 移除列表中指定的位置元素
List subList(int fromIndex, int toIndex) * 返回列表中指定的fromIndex(包括 )
和toIndex(不包括)之間的部分檢視。
按照起始和結束索引截取了一個子List
用List接收(擷取的時候是左閉右開)
其中ArrayList和LinkedLis 是List的兩個最常用的實現子類
ArrayList 資料結構是陣列 執行緒不安全 查詢速度快
LinkedList 資料結構是連結串列 執行緒不安全 增刪速度快
**這兩個效率比較高因為執行緒不安全**
Vector 資料結構是陣列 執行緒安全 增刪速度快
(被ArrayList取代)
***************隨便寫的一個遍歷集合的小例子*************
package collection.jihe;
import java.util.ArrayList;
import java.util.Iterator;
public class ListDemo {
/**
* 遍歷ArrayList集合
*/
public static void main(String[] args) {
Student s=new Student();//自定義類
ArrayList arr=new ArrayList();
s.setName("ZhangSan");
s.setAge(20);
Student s1=new Student();
s1.setName("lisi");
s1.setAge(23);
arr.add(s);//講自定義物件放入集合
arr.add(s1);
Iterator<Student> it=arr.iterator();//獲取迭代器 用於取出集合中的元素
while (it.hasNext()) {//迭代取值的過程
Student ss=it.next();
System.out.println(ss.getName()+" "+ss.getAge());
}
}
}