Collection中Set集合在应用中常见的方法和注意点
Set集合 : 元素?zé)o序的,元素不允許重復(fù)。
????? ---->HashSet? : 存值方式使用哈希表來(lái)存值的。 ?
???????????????? 原理 :? 如果HashSet中存放對(duì)象 ,首先會(huì)調(diào)用對(duì)象的hashCode方法獲取到哈希值,通過(guò)哈希值做移為等運(yùn)算,
???????????????? 計(jì)算出元素在哈表中存儲(chǔ)的位置。
???????????????? 情況一:如果算出的位置沒(méi)有任何元素,可以直接將對(duì)象存放在該位置。
???????????????? 情況二:如果算出的位置存在元素,這個(gè)時(shí)候會(huì)調(diào)用將要存入的元素的equals方法和已經(jīng)存在的元素做對(duì)比,
???????????????? 如果equals返回的是true那么就表示是重復(fù)元素,如果equals返回的是false直接將元素一樣保存在該位置。
????? ---->TreeSet : 里面存放的元素會(huì)根據(jù)自然順序進(jìn)行排序。
???????
??????? 使用注意點(diǎn):
?????????? 1.如果添加的元素存在自然排序的特性,那么存入的元素就會(huì)通過(guò)自然排序進(jìn)行排序。
?????????? 2.如果添加的元素,不具備自然排序的特性,那么著個(gè)時(shí)候必須要實(shí)現(xiàn)Comparable接口,將元素的比較規(guī)則定義到ComparTo方法中
???????????? comparTo的比較規(guī)則: 返回一個(gè)0,負(fù)數(shù)或正數(shù) ,分別表示相等,小于和大于。
??????????
?????????? 3.如果添加的元素,不具備自然排序的特性,又沒(méi)有實(shí)現(xiàn)Comparable接口 ,這個(gè)時(shí)候需要寫(xiě)在創(chuàng)建TreeSet對(duì)象是傳一個(gè)比較器。
??????????
??????????? 比較器的定義方式:
??????????????? 自定義一個(gè)類(lèi)實(shí)現(xiàn):Comprator接口
???????????????
???????????????? 同實(shí)現(xiàn)Comprator中compar(Object o1 ,Objecto1)來(lái)指定元素比較的規(guī)則。
???????????????? 規(guī)則:返回一個(gè)0,負(fù)數(shù)或正數(shù) ,分別表示相等,小于和大于。
????????????
??????????? TreeSet:底層是使用二叉樹(shù)來(lái)存放數(shù)據(jù)的。
?
?
轉(zhuǎn)載于:https://www.cnblogs.com/houjiie/p/6121891.html
總結(jié)
以上是生活随笔為你收集整理的Collection中Set集合在应用中常见的方法和注意点的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: druid部分配置
- 下一篇: ant design-Table中的分页