TreeMap和TreeSet对Comparable和Comparator的使用

TreeSet使用Comparator

/**
 * 解耦方式,业务排序类
 */

import java.util.Arrays;
import java.util.TreeSet;

public class TreeSet1 {

    public static void main(String[] args){
        Human h1=new Human("zhang",100);
        Human h2=new Human("zhan",68);
        Human h3=new Human("zha",399);
        Human h4=new Human("zh",300);
        Human h5=new Human("z",10);
        TreeSet<Human> set=new TreeSet<Human>(//使用业务的排序类(匿名类)
                new java.util.Comparator<Human>(){
                    @Override
                    public int compare(Human o1, Human o2) {
                        return o1.getHandsome()-o2.getHandsome();
                    }
                }
        );
        set.add(h1);//在添加时就已经在排序了
        set.add(h2);
        set.add(h3);
        set.add(h4);
        set.add(h5);
        System.out.println(set);
    }
}
public class Human {
    private final String name;
    private final int handsome;
    public Human(){
        name=null;
        handsome=0;
    }

    public Human(String name,int handsome) {
        this.name = name;
        this.handsome=handsome;
    }

    public int getHandsome() {
        return handsome;
    }



    public String getName() {
        return name;
    }


    public String toString(){
        return "姓名:"+this.name+"帅:"+this.handsome+"\n";
    }
}

TreeSet使用Comparable

/**
 * 实体类实现Comparable接口
 */

import java.util.Collections;
import java.util.TreeSet;

public class TreeSet2 {
    public static void main(String[] args){
        Woker w1=new Woker("农民工",8000);
        Woker w2=new Woker("程序员",6000);
        Woker w3=new Woker("清洁工",9000);
        TreeSet<Woker> set=new TreeSet<Woker>();
        set.add(w1);
        set.add(w2);
        set.add(w3);
        System.out.println(set);
    }
}
public class Woker implements Comparable<Woker>{
    private String type;

    public Woker() {

    }

    public Woker(String type, double salary) {
        this.type = type;
        this.salary=salary;
    }

    public String getType() {
        return type;
    }

    public void setType(String type) {
        this.type = type;
    }

    public double getSalary() {
        return salary;
    }

    public void setSalary(double salary) {
        this.salary = salary;
    }

    private double salary;

    @Override
    public int compareTo(Woker o) {
        return -(this.salary>o.salary?1:(this.salary==o.salary)?0:-1);
    }
    public String toString(){
        return "工种:"+this.type+" 工资:"+this.salary+"\n";
    }
}

TreeMap使用Comparator


import java.util.Set;
import java.util.TreeMap;

public class TreeMap1 {
    public static  void main(String[] args){
        Human h1=new Human("zhang",100);
        Human h2=new Human("zhan",68);
        Human h3=new Human("zha",399);
        TreeMap<Human,String> map=new TreeMap<Human,String>( new java.util.Comparator<Human>(){
            @Override
            public int compare(Human o1, Human o2) {
                return o1.getHandsome()-o2.getHandsome();
            }
        });
        map.put(h1,"z");
        map.put(h2,"z");
        map.put(h3,"z");
        //查看键
        Set<Human> human=map.keySet();
        System.out.println(human);
    }
}

TreeMap使用Comparable

import java.util.TreeMap;

public class TreeMap2 {
    public static  void main(String[] args){
        Woker w1=new Woker("农民工",8000);
        Woker w2=new Woker("程序员",6000);
        Woker w3=new Woker("清洁工",9000);
        TreeMap<Woker,String> map=new TreeMap<>();
        map.put(w1,"z");
        map.put(w2,"z");
        map.put(w3,"z");
        System.out.println(map.keySet());
    }
}

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值