亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > Java > 正文

HashSet和TreeSet使用方法的區別解析

2024-07-13 10:16:07
字體:
來源:轉載
供稿:網友

一.問題

1.HashSet,TreeSet是如何使用hashCode()和equal()方法的

2.TreeMap,TreeSet中的對象何時以及為何要實現Comparable接口?

二.回答:

1.HashSet是通過HashMap實現的,TreeSet是通過TreeMap實現的,只不過Set用的只是Map的key。

2.Map的key和Set都有一個共同的特性就是集合的唯一性.TreeMap更是多了一個有序性.

3.hashCode和equal()是HashMap用的,因為無需排序所以只需要關注定位和唯一性即可.

a.hashCode是用來計算hash值的,hash值是用來確定hash表索引的.

b.hash表中的一個索引處存放的是一張鏈表,所以還要通過equal方法循環比較鏈上的每一個對象才可以真正定位到鍵值對應的Entry.

c.put時,如果hash表中沒定位到,就在鏈表前加一個Entry,如果定位到了,則更換Entry中的value,并返回舊value

d.覆寫key的hashCode()和equal()時一定要注意,不要把它們和可變屬性關聯上,否則屬性變了之后hashCode會變,equal也會為false,這樣在Map中就找不不到它了,而且這樣的對象因為找不到它所以得不到釋放,這樣就變成了一個無效引用了(相當于內存泄漏).

4.由于TreeMap需要排序,所以需要一個Comparator為鍵值進行大小比較.當然也是用Comparator定位的.

a.Comparator可以在創建TreeMap時指定,這時排序時使用Comparator.compare

b.如果創建時沒有指定Comparator,那么就會使用key.compareTo()方法,這就要求key必須實現Comparable接口.

c.TreeMap是使用Tree數據結構實現的,所以使用compare接口就可以完成定位了.

import java.util.HashSet;import java.util.Iterator;public class WpsklHashSet{	//java 中Set的使用(不允許有重復的對象):	public static void main(String[] args)	{		HashSet hashSet=new HashSet();		String a=new String("A");		String b=new String("B");		String c=new String("B");		hashSet.add(a);		hashSet.add(b);		System.out.println(hashSet.size());		String cz=hashSet.add(c)?"此對象不存在":"已經存在";		System.out.println("測試是否可以添加對象 "+cz);		System.out.println(hashSet.isEmpty());		//測試其中是否已經包含某個對象		System.out.println(hashSet.contains("A"));		Iterator ir=hashSet.iterator();		while(ir.hasNext())		{			System.out.println(ir.next());		}		//測試某個對象是否可以刪除		System.out.println(hashSet.remove("a"));		System.out.println(hashSet.remove("A"));		//經過測試,如果你想再次使用ir變量,必須重新更新以下		ir=hashSet.iterator();		while(ir.hasNext())		{			System.out.println(ir.next());		}	}}/*** 通過這個程序,還可以測試樹集的添加元素的無序性與輸出的有序性*/import java.util.TreeSet;import java.util.Iterator;public class TreeSetTest{	public static void main(String[] args)	{		TreeSet tree = new TreeSet();		tree.add("China");		tree.add("America");		tree.add("Japan");		tree.add("Chinese");		Iterator iter = tree.iterator();		while(iter.hasNext())		{			System.out.println(iter.next());		}	}}

另在轉一些其他的區別(感謝“baidu知道”的andygulin朋友):

1、TreeSet是二差樹實現的,Treeset中的數據是自動排好序的,不允許放入null值。

2、HashSet是哈希表實現的,HashSet中的數據是無序的,可以放入null,但只能放入一個null,兩者中的值都不能重復,就如數據庫中唯一約束。

3、HashSet要求放入的對象必須實現HashCode()方法,放入的對象,是以hashcode碼作為標識的,而具有相同內容的String對象,hashcode是一樣,所以放入的內容不能重復。但是同一個類的對象可以放入不同的實例。

總結

以上就是本文關于HashSet和TreeSet使用方法的區別解析的全部內容,希望對大家有所幫助。感興趣的朋友可以繼續參閱本站其他相關專題,如有不足之處,歡迎留言指出。感謝朋友們對本站的支持!


注:相關教程知識閱讀請移步到JAVA教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久99国产精品自在自在app| 国产日韩综合一区二区性色av| 中文字幕亚洲字幕| 成人免费直播live| 成人a在线视频| 日韩av片电影专区| 日本国产精品视频| 国产一区二区三区在线免费观看| 91日韩在线播放| 国产91精品久久久久久久| 亚洲欧洲偷拍精品| www.xxxx欧美| 久久6免费高清热精品| 国产欧美婷婷中文| 亚洲第一精品夜夜躁人人躁| 国产精品成人在线| 成人欧美一区二区三区在线湿哒哒| 亚洲电影免费观看高清| 欧美日韩一区二区在线| 亚洲精品美女久久久久| 久久精品美女视频网站| 日韩av一区二区在线观看| 国产精品自拍小视频| 国产精品欧美在线| 一区二区亚洲欧洲国产日韩| 亚洲欧美一区二区精品久久久| 8090成年在线看片午夜| 美女999久久久精品视频| 91欧美精品成人综合在线观看| 亚洲国产精品一区二区三区| 亚洲精品自拍第一页| 欧美亚洲国产视频小说| 欧美亚洲午夜视频在线观看| 国产精品美女久久久久久免费| 亚洲一级一级97网| 亚洲大胆美女视频| 成人精品网站在线观看| 亚洲色图美腿丝袜| 久久久久久久爱| 亚洲最大的成人网| 成人免费视频网| 92国产精品久久久久首页| 在线免费观看羞羞视频一区二区| 亚洲字幕一区二区| 日韩中文字幕在线免费观看| 欧美大秀在线观看| 国产成人一区二| 日韩视频在线免费| 91人人爽人人爽人人精88v| 久久这里有精品| 欧美专区第一页| 成人福利在线观看| 亚洲xxx视频| 日韩欧美在线免费观看| 欧美日韩一区二区在线播放| 不卡毛片在线看| 久久精品99国产精品酒店日本| 久久国产精品久久久久久| 亚洲一区二区国产| 日本一欧美一欧美一亚洲视频| 国产精品啪视频| 国产日韩欧美在线观看| 精品无码久久久久久国产| 欧美一级在线亚洲天堂| 欧美高清视频在线播放| 日韩精品视频三区| 亚洲直播在线一区| 91热精品视频| 日韩国产精品视频| 2019最新中文字幕| 精品久久久久久久久久久久久久| 亚洲成在人线av| 成人黄色免费在线观看| 91在线视频免费| 日韩av大片在线| 欧美午夜女人视频在线| 97视频免费在线观看| 亚洲人成电影在线观看天堂色| 久久青草精品视频免费观看| 国产一区二区三区久久精品| 亚洲香蕉成视频在线观看| 亚洲aaa激情| 欧美午夜激情在线| 欧美激情在线观看视频| 欧美日韩国产va另类| 国产日本欧美一区二区三区| 亚洲韩国青草视频| 国产成人一区二区三区| 欧美精品福利视频| 欧美二区在线播放| 九九热这里只有在线精品视| 亚洲国产欧美自拍| 91精品国产亚洲| 中文字幕精品一区二区精品| 中文字幕一区电影| 成人性生交xxxxx网站| 久久久久久999| 国产精品高精视频免费| 91po在线观看91精品国产性色| 亚洲国产精品人久久电影| 亚洲国产精品电影| 26uuu日韩精品一区二区| 亚洲国产精品成人一区二区| 成人写真福利网| 好吊成人免视频| 欧美小视频在线观看| 国产婷婷色综合av蜜臀av| 日韩在线观看电影| 久热国产精品视频| 成人黄色午夜影院| 91手机视频在线观看| 亚洲国产成人精品久久| 色综合久久中文字幕综合网小说| 九九热精品视频| 亚洲最大福利视频| 中文字幕在线日韩| 欧美精品18videos性欧| 日韩在线视频导航| 欧美国产日韩一区| 欧美精品第一页在线播放| 亚洲级视频在线观看免费1级| 68精品国产免费久久久久久婷婷| 成人性生交大片免费观看嘿嘿视频| www.亚洲成人| 久久久久久久久久久久av| 亚洲最大av网站| 国产丝袜高跟一区| 黑人极品videos精品欧美裸| 亚洲一区久久久| 欧美成年人在线观看| 国产精品色悠悠| 国产成人精品优优av| 国产69精品久久久久9| 国产精品草莓在线免费观看| 亚洲电影免费观看高清完整版在线观看| 欧美国产欧美亚洲国产日韩mv天天看完整| 91亚洲永久免费精品| 92国产精品久久久久首页| 久久久99久久精品女同性| 国产精品久久久久久久久久ktv| 91成人福利在线| 中文字幕亚洲欧美日韩在线不卡| 日韩视频第一页| 日本欧美国产在线| 欧美性xxxx| 亚洲乱码av中文一区二区| 久久久久久久久久国产| 国产亚洲精品激情久久| 国产精品久久久久99| 亚洲欧美制服另类日韩| 亚洲xxx视频| 日韩电影大全免费观看2023年上| 午夜精品久久久久久久久久久久久| 日本中文字幕久久看| 日韩精品中文字幕在线观看| 日韩中文理论片| 一区二区欧美激情| 18一19gay欧美视频网站| 在线观看亚洲视频| 欧美日韩福利在线观看| 久久躁狠狠躁夜夜爽| 日本午夜在线亚洲.国产| 久久九九全国免费精品观看| 久久理论片午夜琪琪电影网|