zoukankan      html  css  js  c++  java
  • 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));
    
          }   
    
        }
    
      }
    
    }

    二、实现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;
    
       
    
      }
    
    }

    我们改一下最后一行代码​:return age1-age2;

    然后编译运行

     


    总结:我们实现的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.欢迎关注微信公众号:傅里叶变换,个人公众号,仅用于学习交流,后台回复”礼包“,获取大数据学习资料

     

  • 相关阅读:
    Atitit 趋势管理之道 attilax著
    Atitit 循环处理的新特性 for...else...
    Atitit 2017年的技术趋势与未来的大技术趋势
    atitit 用什么样的维度看问题.docx 如何了解 看待xxx
    atitit prj mnrs 项目中的几种经理角色.docx
    Atitit IT办公场所以及度假村以及网点以及租房点建设之道 attilax总结
    Atitit 工具选型的因素与方法 attilax总结
    Atitit.团队文化建设影响组织的的一些原理 法则 定理 效应 p826.v4
    Atiitt 管理方面的误区总结 attilax总结
    Atitit 未来趋势把控的书籍 attilax总结 v3
  • 原文地址:https://www.cnblogs.com/ruigege0000/p/12370088.html
Copyright © 2011-2022 走看看