Day09_46_Set集合_SortedSet03

SortedSet03

  • 让SortedSet集合完成比较,还有另外一种方法,那就是单独编写一个比较器。 java.util.comparator

  • 在TreeSet集合创建的时候可以在集合中传入一个比较器,以后添加元素的时候会先金国比较器的比较再添加进去。

    SortedSet sortedSet= new TreeSet(new ProduceComparatora());

  • 也可以通过匿名内部类的方式来写比较器

 SortedSet sortedSet= new TreeSet(new Comparator(){
              
           比较器实现

    }); 但是匿名内部类的方式来写的话,这个比较器就只能再此程序中用了。




  • 代码

       package com.shige.Collection.Set.SortedSet;
    
       import java.util.Comparator;
       import java.util.Iterator;
       import java.util.SortedSet;
       import java.util.TreeSet;
    
       public class SortedSet03 {
           public static void main(String[] args) {
    
               //创建集合  在TreeSet集合创建的时候可以在集合中传入一个比较器,以后添加元素的时候会先金国比较器的比较再添加进去。
               SortedSet sortedSet= new TreeSet(new ProduceComparatora());
    
               //创建元素对象
                Produce produce1=new Produce("拯救者R700P",10001,8999);
                Produce produce2=new Produce("机械革命",20002,7699);
                Produce produce3=new Produce("ROG",30003,8499);
    
                //添加元素
               sortedSet.add(produce1);
               sortedSet.add(produce2);
               sortedSet.add(produce3);
    
               // 遍历集合
    
               Iterator iterator=sortedSet.iterator();
               while(iterator.hasNext()){
                  Object produce=iterator.next();
                   System.out.println(produce);
               }
    
    
    
           }
       }
    
       class Produce {
           String name;
           int  no;
           double price;
    
           //构造方法
           Produce(){}
           Produce(String name,int no,double price){
               this.name=name;
               this.no=no;
               this.price=price;
           }
    
           // 重写toString方法
           public String toString(){
               return "Produce[商品名: "+name+"       商品编号: "+no+"       商品价格: "+price+"]";
           }
    
       }
    
       //自己写比较器
       class ProduceComparatora implements Comparator{
    
           @Override
           public int compare(Object o1, Object o2) {
               //按照商品价格排序
               double price1=((Produce)o1).price;
               double price2=((Produce)o2).price;
               if(price1==price2){
                   return 0;
               }else if(price1>price2){
                   return 1;
               }else{
                   return -1;
               }
    
           }
       }
    
    
    
posted @ 2021-04-03 16:14  失昼  阅读(36)  评论(0)    收藏  举报