自学javaSE-SortedSet集合

/*
	java.util.Set;
		java.util.SortedSet;无序不可重复,凡是存进去的元素可以按照元素的大小顺序自动排序
			java.util.TreeSet;
*/
public class SortedSetTest01{
    
    public static void main(String[] args){
        //创建集合
        SortedSet ss = new TreeSet();
        
        //Integer
        ss.add(10);//自动装箱
        ss.add(20);
        ss.add(15);
        ss.add(30);
        ss.add(25);
        ss.add(9);
        
        //遍历
        Iterator it = ss.iterator();
        while(it.hasNext()){
            Object element = it.next();
            System.out.println(element.toString);
        }
        
        //String
        SortedSet strs = new TreeSet();
        
        strs.add("JACK");
        strs.add("SUN");
        strs.add("COOK");
        strs.add("LUCK");
        strs.add("KING");
        
        //遍历
        Iterator it = strs.iterator();
        while(it.hasNext()){
            Object o = it.next();
            System.out.println(o);
        }
        
        //日期
        Sring st1 = "2008-08-08";
        Sring st2 = "2009-08-08";
        Sring st3 = "2008-09-08";
        Sring st4 = "2008-08-09";
        Sring st5 = "2012-08-08";
        
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        
        Date t1 = sdf.parse(st1);
        Date t2 = sdf.parse(st2);
        Date t3 = sdf.parse(st3);
        Date t4 = sdf.parse(st4);
        Date t5 = sdf.parse(st5);
        
        //添加
        SortedSet times = new TreeSet();
        
        times.add(t1);
        times.add(t2);
        times.add(t3);
        times.add(t4);
        times.add(t5);
        
        it = times.iterator();
        while(it.hasNext()){
            Object element = it.next();
            Date d = (Date)element;
            System.out.println(sdf.format(d));
        }
    }
    
}
/*
	SortedSet集合存储元素为什么可以自动排序

*/
public class SortedSetTest02{
    
    public static void main(String[] args){
        SortedSet user  = new TreeSet();
        
        User u1 = new User(15);
        User u2 = new User(16);
        User u3 = new User(25);
        User u4 = new User(13);
        User u5 = new User(11);
        
        
        //添加元素
        User.add(u1);
        User.add(u2);
        User.add(u3);
        User.add(u4);
        User.add(u5);
        
        //遍历
        Iterator it = user.iterator();
        while(it.hasNext()){
            System.out.println(it.next());
        }
    }
    
}

class User immplements Comparable{
    
    //String name
    
    int age;
    
    User(int age){
        this.age = age;
    }
    
    public String toString(){
        return "User[age="+age+"]";
    }
    
    //实现java.lang.Comparable;接口中的compareTo方法
    //该方法程序员负责实现,SUN提供的程序已经调用了该方法
    //需求,按照User的age排序
    public int compareTo(Object o){
        //编写一个比较规则
        int age1 = this.age;
        int age2 = ((User)o).age;
        return age2-age1;
    }
}
/*
	让SortedSet集合做到排序还有另外一种方式:java.util.Comparator;
	
	单独编写一个比较器。
*/

public class SortedSetTest03{
    public static void main(String[] agrs){
        
        //创建一个TreeSet集合的时候提供一个比较器
        SortedSet products = new TreeSet(New ProductComparator());
        
        Product p1 = new ProDuct(3.4);
        Product p1 = new ProDuct(4.0);
        Product p1 = new ProDuct(3.0);
        Product p1 = new ProDuct(2.0);
        Product p1 = new ProDuct(5.0);
        
        //添加元素
        products.add(p1);
        products.add(p2);
        products.add(p3);
        products.add(p4);
        products.add(p5);
        
        //遍历
        Iterator it = products.iterator();
        while(it.hasNext()){
            System.out.println(it.next());
        }
        
        
    }
}

class Product{
    
    double price;
    
    Product(double price){
        this.price = price;
    }
    
    public String toString(){
        return price + "";
    }
    
}

//单独编写一个比较强
class ProductComparator implements Comparator{
    
    public int compare(Object o1,Object o2){
        double price1 = ((Product)o1).price;
        double price2 = ((Product)o2).price;
        
        if(price1 == price2){
            return 0;//如果是0的话这俩对象就被合并了
        }else if( price1> price2){
            return -1;
        }else{
            return 1;
        }
        
    }
    
}

参考:https://www.bilibili.com/video/BV1kx411h7jv

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Antgeek

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值