天天看點

集合

集合“

分為 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();

完成循環周遊!