当前位置:编程学习 > JSP >>

java中Comparator接口代码实例

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;
    }
    }

补充:Jsp教程,Java技巧及代码 
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,