TreeSet 
        (1)TreeSet:根据构造方法的不用,选择使用自然排序或者比较器排序。 
                    按照实际的需求,可以对元素进行排序。并且保证唯一。 
        (2)怎么保证的呢? 
                排序:底层结构是二叉树。按照树节点进行存储和取出。 
                        两种实现: 
                                A:自然排序(元素具备比较性) 
 
                                        TreeSet的无参构造,要求对象所属的类实现Comparable接口。 
                                        public int compareTo( Studetn s ) 
                                        { 
                                                //需求是比较年龄 
                                                int num = this.age - s.age ; 
                                                //由于对象有多个成员变量,你不能根据其中的某一个决定其他的。 
                                                //当某一个形同的时候,你还需要判断其他的是不是也是相同的。 
                                                int num2 = ( num == 0 ) ? ( this.name.compareTo( s.name ) ) : num ; 
                                                return num2; 
                                        } 
 
                                B:比较器排序(集合具备比较性) 
 
                                        TreeSet的带参构造,要求构造方法接收一个实现了Comparator接口的对象。 
 
                                        TreeSet<Student> ts = new TreeSet<Student> ( new Comparator<Student>  
                                        { 
                                                @Override 
                                                public int compare ( Student s1 , Student s2) 
                                                { 
                                                        //按照年龄排序,从小到大 
                                                        int num = s1.getAge() - s2.getAge(); 
                                                        //次要条件 
                                                        int num2 = ( num == 0 ) ? ( s1.getName().compareTo(s2.getName()) ) : num; 
                                                        return num2; 
                                                } 
                                        } ); 
 
                                        //创建元素对象 
                                        Student s1 = new Student(“张三”,24); 
                                        Student s2 = new Student(“李四”,30); 
                                        Student s1 = new 。。。。。。 
                                        //添加元素 
                                        ts.add(s1); 
                                        ts.add(s2); 
                                        ........... 
                                        for( Student s : ts ) 
                                        { 
                                                System.out.println(s.getName() + "*****" + s.getAge()); 
                                        } 
 
 
                唯一:根据返回值是否为0。 
                 
                注意: 
                        如果同时有两种方案,以谁为主呢?以比较器为主。 |   
        
 
    
    
    
     
 
 |