java中Comparator介面代碼執行個體

來源:互聯網
上載者:User

set:元素是無序(存入和取出的順序不一定一致),不可以重複
     set集合的功能和Collection一樣
------||HashSet:
     是如何保證元素的唯一性的呢?
     是通過元素的兩個方法,hashCode和equlas來完成。
     如果元素的hashCode值相同,才會判斷equlas是否為true。 
     如果元素的hashcode值不同,不會判斷equlas方法。
------|| TreeSet:可以對Set集合中的元素進行排序。排序的兩種要素:集合和元素。
      TreeSet儲存自訂對象,在排序時,當主要條件相同時,一定要判斷次要條件。
      底層資料結構是二叉樹。保證元素唯一性的依據:compareTo方法return 0;
    
    TreeSet排序的第一種方法:讓元素自身具備比較性。元素需要實現Comparable介面,覆蓋compareTo方法。
       這正方式成為元素自然排序,或者叫預設排序。

     TreeSet的第二種排序方式。
       當元素自身不具備比較性,或者具備的比較性,不是所以所需要的。
       這是就需讓集合自身具備比較性。在集合初始化時,就有了比較方式。
       定義一個類,實現compareable介面,覆蓋compare方法。
       兩種方式都存在時,以比較子為主。

 代碼如下 複製代碼

package com.day14.wd;

import java.util.Comparator;
import java.util.Iterator;
import java.util.TreeSet;

public class TreeSetDemo {
    public static void main(String[] ag){
    TreeSet ts=new TreeSet(new MyCompare());
    ts.add(new Student("lisi", 123));
    ts.add(new Student("wangwu", 23));
    ts.add(new Student("wef",23));
    Iterator it=ts.iterator();
     while (it.hasNext()) {
        Student ss = (Student) it.next();
        System.out.println("name"+ss.getName()+",age"+ss.getAge());
       
    }
    
    }

}
class MyCompare implements Comparator{

    public int compare(Object o1, Object o2) {
        // TODO Auto-generated method stub
        Student p1=(Student)o1;
        Student p2=(Student)o2;
        //保證唯一性,返回0;
        int num=p1.getAge()-p2.getAge();
        if(num==0){
          return    p2.getName().compareTo(p2.getName());
             }//String實現了compareTo()方法
        return num ;
    }
   
}

class  Student {
     private String name;
     private int  age;
     public Student(String name,int age){
     this.name=name;
     this.age=age;
     }

    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    }

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.