集合“
分為 collection(接口):存放單一進制素,裡面就是他的值。
map(接口) 存放鍵值對,一個鍵對應他的值。
collection下面又有兩個接口
list:元素有順序的排列,就是說放進去什麼順序就是什麼順序,
裡面的元素也是可以重複的
set:元素沒有順序,不是實際上的沒有順序,隻是他不是按你放進去的順序,而是根據hashcode值排列的
不能重複,表示的是鍵名不能重複。
list接口下有3個常用實作類,他們分别是arraylist(用的最多),voctor,linkedlist
victor是1.0版本的arraylist是1.2的
相比較而言 victor線程安全但是效率慢
反之arraylist線程不安全,效率高
linkedlist是連結清單式結構,arraylist數組式結構
linkedlist中的元素每一個元素都有他前一個和後一個元素的記憶體位址,通過記憶體位址的連接配接來通路!
對于效率而言,如果是前面和中間的元素的話linkedlist肯定比arraylist效率高,因為數組的後面的元素的下表都要改變
對于後面的元素修改的話arraylist的效率高
但是我們一般增加元素都是從後面加,
對于查詢的話毋庸置疑肯定是數組快,
是以一般用arraylist;
set:
hashset和treeset
前者不能自定義排序,效率高
後者可以自定義排序,但是效率低些!
map:
hashmap
treemap
hashtable
前兩者和set中的類型差別是一樣的
就hashtable而言,版本是1。0的線程安全,不能放空間和空值,
hashmap和treemap是1.2的 線程不安全,能放空鍵空值。
對于list和set他們都有add()方法,但是map沒有,他隻有put()方法
list可以通過循環周遊。set隻能通過疊代器來周遊。
疊代器:iterator
首先new一個iterator對象a,
循環
如果a.hasnext();繼續循環,沒有推出循環
下個元素就為a.next();
完成循環周遊!