Java 集合之HashSet常用方法實例介紹
阿新 • • 發佈:2018-08-01
java args arr 子類 boolean 常用 地址 比例 可能 一.簡介
HashSet是Set常見的子類對象,此類實現Set接口,由哈希表(實際為HashMap實例)支持。 對集合的叠代次序不作任何保證; 特別是,它不能保證訂單在一段時間內保持不變。這個類允許null元素。
這個類提供了基本操作(add,remove,contains和size)固定的時間性能,假定哈希函數將分散的桶中正確的元素。 叠代此集合需要與HashSet實例的大小(元素數量)和後臺HashMap實例(桶數)的“容量”的總和成比例的時間。 因此,如果叠代性能很重要,不要將初始容量設置得太高(或負載因子太低)是非 常重要的。
Set集合是無序,在存儲時哈希表是按哈希值的順序存儲的,所謂的無序就是說在存儲的順序和你加入的順序可能不同。當兩對象的哈希地址值相同時,哈希表中存儲時先判斷是否為同一個對象,若為同一個對象則不重復存儲,若判斷為不同對象則在其下方順延而不是向右順延。
二.常用方法說明
HashSet是Set常見的子類對象,此類實現Set接口,由哈希表(實際為HashMap實例)支持。 對集合的叠代次序不作任何保證; 特別是,它不能保證訂單在一段時間內保持不變。這個類允許null元素。
這個類提供了基本操作(add,remove,contains和size)固定的時間性能,假定哈希函數將分散的桶中正確的元素。 叠代此集合需要與HashSet實例的大小(元素數量)和後臺HashMap實例(桶數)的“容量”的總和成比例的時間。 因此,如果叠代性能很重要,不要將初始容量設置得太高(或負載因子太低)是非 常重要的。
Set集合是無序,在存儲時哈希表是按哈希值的順序存儲的,所謂的無序就是說在存儲的順序和你加入的順序可能不同。當兩對象的哈希地址值相同時,哈希表中存儲時先判斷是否為同一個對象,若為同一個對象則不重復存儲,若判斷為不同對象則在其下方順延而不是向右順延。
import java.util.HashSet; import java.util.Iterator; public class Set_1 { public static void main(String[] args){ //產生HashSet對象 HashSet hashset1 = new HashSet(); //添加元素 boolean b1 = hashset1.add("111"); //添加此元素之前無重復,故返回值為true hashset1.add("22"); hashset1.add("333"); hashset1.add("1"); boolean b2 = hashset1.add("111"); System.out.println("b1="+b1+";b2="+b2); //此元素在集合中已存在,添加後返回值結果為 false String arry1[] = {"arry1","arry2","arry3"}; int arry2[] = {11,22,3,44}; HashSet hashset2 = new HashSet(); hashset1.add(arry1); hashset1.add(arry2); hashset2.add("you"); hashset2.add("are"); hashset2.add("yourself"); //使用addAll添加一個集合 hashset1.addAll(hashset2); System.out.println(hashset1); //無序,取出的順序與存入的順序可能不同,但每次取出的順序是相同的哦(不要認為每次取出的順序都不同)、 System.out.println("---------------------開始叠代器--------------------------"); //叠代器循環取出HashSet中的元素 Iterator it1 = hashset1.iterator(); //使用while,循環獲取叠代器中的每個元素 // while (it1.hasNext()){ // System.out.println(it1.next()); // } //使用for,循環獲取叠代器中的每個元素 System.out.println("it1.hasNext()="+it1.hasNext()); for (;it1.hasNext();){ System.out.println(it1.next()); } } }
待續
Java 集合之HashSet常用方法實例介紹