Java连载89-SorteSet、Comparable接口

一、 SortedSet集合直接举例

package com.bjpowernode.java_learning;
import java.util.*;
/**
 * java.util.Set
 *   java.util.SortedSet;无序不可以重复,但是存进去的元素可以按照元素大小顺序自动进行排列
 *     java.utile.TreeSet;
 */
import java.text.*;
public class D89_1_SortedSet {
  public static void main(String[] args) throws ParseException{
    //创建集合
    SortedSet ss = new TreeSet();
    //添加元素
    ss.add(10);//自动装箱
    ss.add(12);
    ss.add(5);
    ss.add(78);
    
    Iterator i = ss.iterator();
    while(i.hasNext()) {
      Object element = i.next();
      System.out.println(element);
    }
    //String
    SortedSet sts = new TreeSet();
    sts.add("Jack");
    sts.add("SUN");
    sts.add("COOK");
    sts.add("LUCKY");
    Iterator i2 = sts.iterator();
    while(i2.hasNext()) {
      Object element = i2.next();
      System.out.println(element);
    }
    //日期Date
    String t1 = "2008-08-08";
    String t2 = "2009-08-08";
    String t3 = "2008-09-08";
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
    Date dt1 = sdf.parse(t1);
    Date dt2 = sdf.parse(t2);
    Date dt3 = sdf.parse(t3);
    
    
    SortedSet sss = new TreeSet();
    sss.add(t1);
    sss.add(t2);
    sss.add(t3);
    
    //遍历
    Iterator its = sss.iterator();
    while(its.hasNext()) {
      Object element = its.next();
      if(element instanceof Date) {
        Date d = (Date)element;
        System.out.println(sdf.format(d));
      }    
    }
  }
}

89.1
二、实现Comparable接口
1.SortedSet集合存储元素为什么可以进行自动排序
因为被存储的元素实现了Comparable接口,SUN编写TreeSet集合在添加元素的时候,会调用compareTo方法完成比较。

package com.bjpowernode.java_learning;

import java.util.*;
import java.lang.*;

public class D89_2_ImplementComparable {
  public static void main(String[] args) {
    SortedSet s = new TreeSet();
    User89 u1 = new User89(3);
    User89 u2 = new User89(45);
    User89 u3 = new User89(12);
    User89 u4 = new User89(25);
    s.add(u1);
    s.add(u2);
    s.add(u3);
    s.add(u4);
    
    Iterator i = s.iterator();
    while(i.hasNext()) {
      Object o = i.next();
      System.out.println(o.toString());
    }
  }

}
class User89 implements Comparable{
  int age;
  User89(int age){
    this.age = age;
  }
  public String toString() {
    return age+"";
  }
  //实现java.lang.Comparable;接口中的compareTo方法
  //该方法程序员负责,SUN提供的程序已经调用了该方法
  //需求:按照User89的年龄进行排序
  public int compareTo(Object o) {
    //编写一个规则
    int age1 = this.age;
    int age2 = ((User89)o).age;
    return age2-age1;
    
  }
}

89.2

我们改一下最后一行代码:return age1-age2;
然后编译运行
89.3
总结:我们实现的compareTo方法的时候,它的底层是一个二叉树
当返回结果大于0,那么比较的元素就会放在右子树(相当于比较出来了结果:大于);同理,当返回结果小于0,那么比较的元素就会放在左子树;
如果返回零的话,说明这两个对象是完全相同的,因此只会存储一个对象。(可以看一看Comparable源码,了解一下)。
三、源码:
D89_1_SortedSet.java
D89_2_ImplementComparable.java
https://github.com/ruigege66/Java/blob/master/D88_1_HashSetExample.java
https://github.com/ruigege66/Java/blob/master/D89_2_ImplementComparable.java
2.CSDN:https://blog.csdn.net/weixin_44630050
3.博客园:https://www.cnblogs.com/ruigege0000/
4.欢迎关注微信公众号:傅里叶变换,个人公众号,仅用于学习交流,后台回复”礼包“,获取大数据学习资料
89.4

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值