HashSet類唯一特性之案例

2021-09-03 06:57:09 字數 2550 閱讀 5263

需求:在乙個集合中儲存了無序並且重複的字串,定義乙個方法,讓其有序(字典順序),而且還不能去除重複。

分析:定義乙個list集合,並儲存重複的無序的字串

定義方法對其排序保留重複

列印list集合

實現:

public static void main(string args) 

/** 定義方法,排序並保留重複

* 分析:

* 1,建立treeset集合物件,因為string本身就具備比較功能,但是重複不會保留,所以我們用比較器

* 2,將list集合中所有的元素新增到trreset集合中,對其排序,保留重複

* 3,清空list集合

* 4,將treeset集合中排好序的元素新增到list中

*/public static void sort(listlist)

});//2,將list集合中所有的元素新增到trreset集合中,對其排序,保留重複

ts.addall(list);

//3,清空list集合

list.clear();

//4,將treeset集合中排好序的元素新增到list中

list.addall(ts);

}

需求:從鍵盤接收乙個字串,程式對其中所有字元進行排序,例如鍵盤輸入: helloitcast程式列印:acehillostt

分析:鍵盤錄入字串,scanner

將字串轉換為字元陣列

定義treeset集合,傳入比較器對字元排序並保留重複

遍歷字元陣列,將每乙個字元儲存在treeset集合中

遍歷treeset集合,列印每乙個字元

實現:

public static void main(string args) 

});//4,遍歷字元陣列,將每乙個字元儲存在treeset集合中

for(char c : arr)

//5,遍歷treeset集合,列印每乙個字元

for(character c : ts)

}

需求:程式啟動後,可以從鍵盤輸入接收多個整數,直到輸入quit時結束輸入,把所有輸入的整數倒序排列列印

分析:建立scanner物件,鍵盤錄入

建立treeset集合物件,treeset集合中傳入比較器

無限迴圈不斷接收整數,遇到quit退出,因為退出是quit,所以鍵盤錄入的時候應該都以字串的形式錄入

判斷是quit就退出,不是將其轉換為integer,並新增到集合中

遍歷treeset集合並列印每乙個元素

實現:

public static void main(string args) 

});//3,無限迴圈不斷接收整數,遇到quit退出,因為退出是quit,所以鍵盤錄入的時候應該都以字串的形式錄入

while(true)

//4,判斷是quit就退出,不是將其轉換為integer,並新增到集合中

integer i = integer.parseint(line);

ts.add(i);

} // 5,遍歷treeset集合並列印每乙個元素

for (integer integer : ts)

}

需求:鍵盤錄入5個學生資訊(姓名,語文成績,數學成績,英語成績),按照總分從高到低輸出到控制台。

分析:定義乙個學生類 

成員變數:姓名,語文成績,數學成績,英語成績,總成績

成員方法:空參,有參構造,有參構造的引數分別是姓名,語文成績,數學成績,英語成績

tostring方法:在遍歷集合中的student物件列印物件引用的時候會顯示屬性值 

鍵盤錄入需要scanner,建立鍵盤錄入物件

建立treeset集合物件,在treeset的建構函式中傳入比較器,按照總分比較

錄入五個學生,所以以集合中的學生個數為判斷條件,如果size是小於5就進行儲存 

將錄入的字串切割,用逗號切割,會返回乙個字串陣列,將字串陣列中從二個元素轉換成int數

將轉換後的結果封裝成student物件,將student新增到treeset集合中

遍歷treeset集合列印每乙個student物件

實現:

public class student 

public student(string name, int chinese, int math, int english)

public int getsum()

public string tostring()

}

public static void main(string args) 

});//4,錄入五個學生,所以以集合中的學生個數為判斷條件,如果size是小於5就進行儲存

while(ts.size() < 5)

//7,遍歷treeset集合列印每乙個student物件

system.out.println("排序後的學生資訊:");

for (student s : ts)

}

HashSet類唯一特性之案例

需求 編寫乙個程式,獲取10個1至20的隨機數,要求隨機數不能重複。並把最終的隨機數輸出到控制台。分析 有random類建立隨機數物件 需要儲存10個隨機數,而且不能重複,所以我們用hashset集合 如果hashset的size是小於10就可以不斷的儲存,如果大於等於10就停止儲存 通過rando...

HashSet保證元素唯一原理

1.hashset保證元素唯一原理 依賴於hashcode 和equals 方法 2.唯一原理 2.1 當hashset集合要儲存元素的時候,會呼叫該元素的hashcode 方法計算雜湊值 2.2 判斷該雜湊值對應的位置上,是否有元素 2.3 如果該雜湊值位置上沒有元素,那麼就直接儲存該元素 2.4...

HashSet保證資料唯一的原理

hashset 的底層判斷原理 資料結構是雜湊表,執行緒是非同步的.保證元素唯一性的原理 判斷元素的hascode值,若hashcode值相同,則用equals 方法來判斷,若還相同則這兩個值是相等的,則不訪問這個物件 是通過元素的兩個方法hashcode 和equals 方法來完成 對於判斷元素是...