hashSet基礎認識

2022-06-20 10:12:10 字數 1759 閱讀 5533

/*

* 雜湊值:是乙個十進位制的整數,由系統隨機給出(這個位址值,就是乙個邏輯位址)

* object:有乙個hashcode()獲取物件的雜湊值

* int hashcode()返回該物件的雜湊碼值

* object中的原始碼:

* public native int hashcode();

* native:native代表呼叫的是本地作業系統的方法,(或許是呼叫jvm的方法,jvm再去呼叫作業系統函式)

** */

public class demohash extends object

/*hashset集合的儲存資料的結構(雜湊表)

jdk1.8之前是 陣列+鍊錶

jdk1.8之後有兩種1.陣列加鍊表

2.陣列+紅黑樹

區分在於陣列中同乙個欄位下的資料大於8時,會將鍊錶改為紅黑樹,從而提高速度

雜湊表的特點是:速度快

會建立乙個長度為16的陣列;(初始容量是16)

陣列結構:將元素進行了分組(相同雜湊值的元素是一組),通過鍊錶/紅黑樹結構把相同雜湊值的元素連到一起

儲存資料時:

1.先計算元素的雜湊值

2.把相同的雜湊值的元素存放在一起,通過鍊錶或者紅黑樹鏈結起來

*/hashsetset = new hashset<>();

string a = new string("重地");

string b = new string("通話");

string c = new string("abc");

system.out.println(a.hashcode());//雜湊值1179395

system.out.println(b.hashcode());//雜湊值1179395

set.add("abc");

set.add(a);

set.add(b);

set.add(c);

system.out.println(set);

/*set集合存放元素不重複的原因

1.通過hashcode()方法獲取到物件的雜湊值;

2.在陣列中查詢有沒有這個的雜湊值

3.第一種:沒有找到這個雜湊值,那就把這個物件儲存進集合中

第二種:找到這個雜湊值,產生了雜湊衝突(相同的雜湊值就會產生雜湊衝突)

那麼就會呼叫equals()方法 去跟雜湊值下的鍊錶/黑紅樹下的元素意義比較

返回true:則認為元素重複,就不會把元素放入集合

返回false:則認為元素不重複,就會把元素放入集合

*//*

儲存自定義的資料型別的時候,需要重寫hashcode()方法和equals()方法

因為:在物件中儲存的是十六進製制的位址,它的位址值是唯一的,相同於他們的雜湊值永遠是不同的

並且equals比較的是位址值,所以呼叫equals時 返回都會是false,認為元素不重複,將元素存入集合

* */

hashsethashset = new hashset<>();

dog dog1 = new dog();

dog dog2 = new dog();

hashset.add(dog1);

hashset.add(dog2);

system.out.println(dog1.hashcode());

system.out.println(dog2.hashcode());

system.out.println(hashset);

}}

shell基礎認識

shell 我們在終端下寫命令linux核心是看不懂的必須通過shell解釋成核心可執行的 這就是shell 其實解釋命令這只是它的乙個功能模組,shell還可以用來進行程式設計 有點類似window下 bat檔案可以用來對系統的操作 將。bat檔案放在c盤中的啟動檔案中一開機就執行.bat檔案 x...

MVC 基礎認識

mvc是模型 model 檢視 view 控制器 controller 的縮寫,是一種框架,強制性的使應用程式的輸入 處理和輸出分開,是一種軟體設計典範,用一種業務邏輯 資料 介面顯示分離的方法組織 將業務邏輯聚集到乙個部件裡面,在改進和個性化定製介面及使用者互動的同時,不需要重新編寫業務邏輯 mo...

AJAX 基礎認識

1.什麼是ajax ajax是一種用於建立快速動態網頁的技術,非同步的js 和 xml,本質是使用 js 提供的 xmlhttprequest 物件 非同步的向伺服器傳送請求,並接受響應資料 格式是 xml 預設 在ajax中,伺服器響應回來的是部分的資料而不是完整的頁面,也就是說響應的是我們所需要...