zoukankan      html  css  js  c++  java
  • java中Collection,Arrays内元素的排序问题(comparable,comparator接口的应用)

    在我们通常对于collection的使用过程中,很多时候都需要对内部的元素进行排序。对于这个排序,通常可以有两种实现方式:

    1.创建一个comparator类实现comparator接口,然后应用collection内部提供的sort方法进行排序。例如对于图中的边,按照其权值大小进行排序(后面介绍第二种方法也是就这个例子进行)。

    边Edge的实现如下:

    public class Edge{

        Vertex s,t;

        double weight;

        。。。

    }

    我们实现的comparator类定义如下:

    进行排序的方法如下:

    public void sort(List<Edge> edges){

      EdgeComparator comparator = new EdgeComparator();

      Collections.sort(edges,comparator);

    }

    这样我们就可以对于edges中的Edge按照其权值的大小进行排序了。在我们的实际应用中,可以按照自己的需要自行调整。

    2.让你的ADT实现Comparable接口,然后override compareTo()方法。这种方法与Comparator的区别主要是不需要构建新的Comparator类,比较代码放在ADT内部。

    由此我们重写上面定义的Edge类如下:

    再应用Collections.sort(edges)对edges进行排序。

  • 相关阅读:
    一二类斯特林数小结
    我的博客搬家了!
    常用编程思想与算法
    【spring专题】spring简介
    九、 Java程序初始化的顺序(二)
    八、 Java程序初始化的顺序(一)
    python的上下文管理
    七、 面向对象(二)
    六、 面向对象基础
    paramiko模块及ssh远程登陆
  • 原文地址:https://www.cnblogs.com/mrchi/p/9218458.html
Copyright © 2011-2022 走看看