127_容器_排序容器_TreeSet与TreeMap

5

  • Person.java
package collection.sort.TreeSet_TreeMap;

public class Person {
    private final String name;//名称
    private final int handsome;//帅气指数

    public Person() {
        name =null;
        handsome =0;
    }

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

    public String getName() {
        return name;
    }

    public int getHandsome() {
        return handsome;
    }

    @Override
    public String toString() {
        return "姓名:"+this.name+",帅气指数:"+this.handsome+"\n";
    }
}
  • PersonImpl.java
package collection.sort.TreeSet_TreeMap;

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

/**
 * 提供了 解耦的方式:业务排序类
 */

public class PersonImpl {
    public static void main(String[] args) {
        Person p1 =new Person("您",100);
        Person p2 =new Person("刘德华",1000);
        Person p3 =new Person("梁朝伟",1200);
        Person p4 =new Person("老裴",50);

        //依次存放到TreeSet容器中,使用排序的业务类(匿名内部类)
        TreeSet<Person> persons =new TreeSet<Person>(
                    new java.util.Comparator<Person>(){
                        @Override
                        public int compare(Person o1, Person o2) {
                            return -(o1.getHandsome()-o2.getHandsome());
                        }
                    }
                );
        persons.add(p1);
        //TreeSet 在添加数据时排序
        persons.add(p2);
        persons.add(p3);
        persons.add(p4);
        System.out.println(persons);

        /*
        //改变数据
        p4.setHandsome(100);
        p4.setName("您");
        //p4 与p1 内容重复 ->设为final,把set方法取消
        System.out.println(persons);
        */ 
        System.out.println("============================================");
        TreeMap<Person,String> map =new TreeMap<Person,String>(new java.util.Comparator<Person>(){
            @Override
            public int compare(Person o1, Person o2) {
                return -(o1.getHandsome()-o2.getHandsome());
            }
        } );
        map.put(p1, "bjsxt");
        map.put(p2, "bjsxt");
        map.put(p3, "bjsxt");
        map.put(p4, "bjsxt");

        //查看键
        Set<Person> person1 =map.keySet();
        System.out.println(person1);
    }
}
  • Worker.java
package collection.sort.TreeSet_TreeMap;


public class Worker implements Comparable<Worker>{
    //工种
    private String type;
    //工资
    private double salary;

    public Worker() {
    }

    public Worker(String type, double salary) {
        super();
        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;
    }

    /**
     * 按工资升序
     */
    @Override
    public int compareTo(Worker o) {
        return this.salary>o.salary?1:( this.salary==o.salary?0:-1);
    }

    @Override
    public String toString() {
        return "工种:"+this.type+",工资:"+this.salary+"\n";
    }

}
  • WorkerImpl.java
package collection.sort.TreeSet_TreeMap;

import java.util.TreeSet;

/**
 * 实体类实现Comparable 接口的应用
 */

public class WorkerImpl {
    public static void main(String[] args) {
        Worker w1 =new Worker("垃圾回收员",12000);
        Worker w2 =new Worker("农民工",8000);
        Worker w3 =new Worker("程序猿",5000);

        TreeSet<Worker> employees =new TreeSet<Worker>();
        employees.add(w1);
        employees.add(w2);
        employees.add(w3);
        System.out.println(employees);
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值