TreeSet、比較的方法


Set:無序、不可以重復元素

|-- HashSet : 數據底層結構是哈希表。線程是非同步的。

                        保證元素唯一性的原理:判斷元素的hashcode的值是否相同

                        如果相同,還會繼續判斷元素的equals方法,是否為true。

|-- TreeSet:可以對Set集合中的元素進行排序。

                    底層數據結構是二叉樹、 保證元素唯一性的依據: compareTo方法return();                         comparable 里面是 compareTo方法。

 

TreeSet排序的第一種方式:讓元素自身具備比較性,元素需要實現comparable接口,覆蓋compareTo方法。這種方式也稱為元素的自然排序,或者叫默認排序。

TreeSet排序的第二種方式:當元素自身不具備比較性,或者具備的比較性不是所需要的。 這時需要讓集合自身具備比較性。定義比較器。 兩種都存在,以比較器為主。

定義一個類, 實現comparator,覆蓋 compare方法。 進行自定義比較。

import java.util.*;

public class Practice_1 {    
    
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        TreeSet<Object> ts = new TreeSet<Object>(new MyCompare());
        ts.add("abcd");
        ts.add("cg");
        ts.add("stfff");
        ts.add("sbbbb");
        ts.add("abdwqeqw");
        Iterator it = ts.iterator();
        while(it.hasNext())
        {
            sop(it.next());
        }
    }
    public static void sop(Object obj)
    {
        System.out.println(obj);
    }
}
class MyCompare implements Comparator                                     //示例 !
{
    public int compare(Object o1, Object o2)
    {
        String s1 = (String)o1;
        String s2 = (String)o2;
        
        int num = new Integer(s1.length()).compareTo(new Integer(s2.length()));
        
        if( num ==0 )
        {
            return s1.compareTo(s2);
        }
        return num;
    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM