hase表原理:
簡單的說他是通過一種演算法來計算雜湊值,類似於我們獲取到乙個資料然後給他取餘數 被除數是雜湊表的表長。這樣優勢在於 訪問速度快。但同時有乙個問題就是雜湊衝突。簡單來說就是我們100%9=1 10%=1 這兩個算下來的雜湊值一樣。這時候就需要考慮 怎麼放置資料。
解決雜湊衝突:首先判斷兩個元素是否是同乙個物件。底層比較是通過equal 方法比較的 ,相同的話不會插入到表裡,不同的話 他會有好多種演算法在繼續算出他的雜湊值,其中有一種叫做鏈位址法(拉鍊法) 它類似與鍊錶。前乙個元素裡放著下乙個元素的位址。如下圖:
haseset:內部使用hase表結構 不保證順序,不同步。使用equal 和hasecode 來比較物件是否相同。取出只有迭代器方法
treeset:內部使用二叉樹結構,可以通過實現compareable 介面 實現排序。還可以使用比較器作為treeset 構造引數傳入。
一般集合中儲存的物件覆蓋hashcode 和equal 。
/**
* 物件自然排序 按照年齡排序
*/@override
public int compareto(student o)
int temp = this.age - o.age;
return temp == 0 ? this.stuname.compareto(o.stuname) : temp;
}
hashtable:內部資料結構雜湊表 同步 不允許null 作為key value
hashmap:內部使用也是雜湊表 不同步。允許key 和value 作為null 同步的話需要使用collections.synchronizedmap(map)
treemap:資料結構是二叉樹。不是同步。可以對key 排序
linkedhashmap:資料結構是鍊錶和雜湊表,集合存入和取出順序一直。
Java集合總結(二) Set集合
set集合儲存的元素是沒有順序 且不能重複的。它有三個實現類 hashset treeset enumset 1 hashset hashset按照hash演算法來儲存集合中的元素,因此具有良好的訪問和查詢效能 特點 儲存的特性 hashset判斷兩元素相等的標準 兩個物件通過equals 方法比較...
學習總結 對映集合
對映 對映的組成 鍵 值對 key value 在乙個map中,鍵key是不可以重複的,是唯一的,value是可以重複的,乙個鍵key對應乙個值value 有hashmap,treemap,linkedhashmap三種,特點與set類似 格式 maplove new hashmap jdk6 格式...
集合框架學習總結
集合實際用來儲存物件 object 但需要注意的是,集合存放的實質上是物件的位址。接下來我們先來看一下集合框架圖,如下 同一顏色方框,我將它們視為同一級 首先由上圖確認一下它們的關係 collection 介面 set 介面 儲存元素特點 元素無序,元素不可以重複,與list集合體系本質區別就是無索...