treeset如何排序 javaset集合的值可以排序嗎?
javaset集合的值可以排序嗎?Set集合的排序我們知道,Set集合是無序的,可以使用TreeSet類,那么TreeSet進(jìn)行排序的規(guī)則是怎樣的呢?1TreeSet支持兩種排序方式,自然排序和定制排
javaset集合的值可以排序嗎?
Set集合的排序我們知道,Set集合是無序的,可以使用TreeSet類,那么TreeSet進(jìn)行排序的規(guī)則是怎樣的呢?1TreeSet支持兩種排序方式,自然排序和定制排序,在默認(rèn)情況下,TreeSet采用自然排序.自然排序:TreeSet會調(diào)用集合元素的compareTo(Objectobj)方法來比較元素之間的大小關(guān)系,然后將集合的元素按升序排列,這種方式就是自然排序.為什么集合元素有compareTo方法,因?yàn)榧显貙ο髮?shí)現(xiàn)了Comparable接口,該方法返回一個(gè)整數(shù)值,當(dāng)一個(gè)對象調(diào)用該方法與另一個(gè)對象進(jìn)行比較,例如:obj1.compareTo(obj2)如果返回0,表示這兩個(gè)對象相等,如果該方法返回一個(gè)正整數(shù),表示obj1大于obj2如果該方法返回一個(gè)負(fù)整數(shù),表示obj1小于obj2所以需要使用TreeSet集合進(jìn)行自然排序,元素必須實(shí)現(xiàn)Comparable接口,但是Java一些常用的類已經(jīng)實(shí)現(xiàn)了該接口,例如:StringCharacterBooleanDateTimeBigDecimalBigInteger等如:TreeSet<String>ts=newTreeSet<String>()ts.add("b")ts.add("c")ts.add("a")System.out.println(ts)結(jié)果:abc