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