文档章节

利用 Collections.sort 实现排序的几种方法

人生如歌
 人生如歌
发布于 2015/01/21 10:46
字数 407
阅读 76
收藏 0

一、Java自行实现 compareTo 方法的类可以直接调用 Collections.sort 实现排序,如 String 类:String类实现了Comparable接口,而且compareTo方法底层是用C++封装实现的,比较高效,我们应该直接使用。Integer等基础

数据类型的包装类也是如此。

List<String> lists = new ArrayList<String>();  
lists.add("6");  
lists.add("5");  
lists.add("10");  
//lists中的对象String 本身含有compareTo方法,可以直接调用sort方法,默认实现升序排序  
Collections.sort(lists);

二、自定义的类一般有两种方法实现排序:

  1. 实现 Comparable 接口。

public class Test implements Comparable<Test>{  
    private int order;  
    public int getOrder() {  
        return order;  
    }  
    public void setOrder(int order) {  
        this.order = order;  
    }  
 
    @Override  
    public int compareTo(Test t) { //根据序号对此对象进行排序
        return new Integer(this.order).compareTo(new Integer(t.getOrder()));
    }      
}

    2. 实现 Comparator 接口。

public class Apple {
 private String appleName;
 private String appleColor;
 private String appleProvider;
 
 public Apple(String appleName, String appleColor, String appleProvider) {
  super();
  this.appleName = appleName;
  this.appleColor = appleColor;
  this.appleProvider = appleProvider;
 }

 @Override
 public String toString() {
  return "appleName=" + appleName;
 } 
  
}
import java.util.Comparator;

public class Test implements Comparator<Apple> {

 private int comparatorType;

 /**

  * comparatorType 为 0 ,根据 appleName 排序

  * comparatorType 为1 ,根据 appleColor 排序

  * comparatorType 为2 ,根据 appleProvider 排序

  * @param comparatorType

  */

 public Test(int comparatorType) {

  this.comparatorType = comparatorType;

 }

 @Override

 public int compare(Apple lhs, Apple rhs) {

  if(0 == this.comparatorType)

   return lhs.getAppleName().compareTo(rhs.getAppleName());

  else if(1 == this.comparatorType)

   return lhs.getAppleColor().compareTo(rhs.getAppleColor());

  else if(2 == this.comparatorType)

   return lhs.getAppleProvider().compareTo(rhs.getAppleProvider());

  return 0;

 }

}
public static void main(String[] args){

  List<Apple> apples = new ArrayList<Apple>();
  apples.add(new Apple("h", "b", "hd"));
  apples.add(new Apple("a", "c", "gf"));
  Collections.sort(apples, new Test(2));//根据供应商进行排序

  System.out.println(apples.toString());

 }

打印结果:[appleName=a, appleName=h]

© 著作权归作者所有

人生如歌
粉丝 7
博文 15
码字总数 7993
作品 0
深圳
程序员
私信 提问
JAVA中几种常见集合的使用实例

Java.util.ArrayList(类): import java.awt.; import java.util.; public class CollectionTest {//List是一个能包含重复元素的已排序的Collection,有时list也称为序列,List第一个元素的...

小梅菜鸟
2012/03/14
84
0
java中Collections.sort() 排序函数的用法

用Collections.sort方法对list排序有两种方法 一.第一种是list中的对象实现Comparable接口 /*** 根据order对User排序*/public class User implements Comparable<User>{ private String nam......

谢思华
2016/01/14
153
0
用Collections.sort方法对list排序的两种方法

用Collections.sort方法对list排序有两种方法 第一种是list中的对象实现Comparable接口,如下: / 根据order对User排序 / public class User implements Comparable<User>{ private String ......

ychh
2011/11/29
201
0
浅谈 Java 自定义排序之 Comparator

  排序是编程中经常需要用到的功能,而 Java 的工具类 Collections 中也提供了 sort 方法用于实现对列表等集合中元素的排序。Collections.sort() 方法有两种形式: 和 。   第一种 要求 ...

Amstrong
2016/10/01
571
0
用Java集合中的Collections.sort方法对list排序的两种方法

用Collections.sort方法对list排序有两种方法 第一种是list中的对象实现Comparable接口,如下: /** 根据order对User排序 */public class User implements Comparable{ } 测试一下: public...

Mr&Cheng
2013/05/19
15.3K
1

没有更多内容

加载失败,请刷新页面

加载更多

【2019个推开发者节】航母级APP都在用的SDK现在全部免费,35岁老程序员表示第一次见!

1024程序员节来了 双11近了 各路满减、折扣、领券、秒杀、集赞 营销玩法猛于虎,一看优惠两毛五 日常拼命赶“需求” 修“Bug”的开发者们 想找个好用又不贵的工具太难了 亲爱的开发者们,不要...

个推
35分钟前
9
0
Ceph对可用存储空间的校验与控制

Ceph一共使用了四个配置对可用存储空间进行校验并实施控制,如下: mon_osd_full_ratio:集群中的任一OSD空间使用率大于等于此数值时,集群将被标记为Full,此时集群将停止接受来自客户端的写...

浪里个浪浪
36分钟前
11
0
工厂方法模式

1.定义:创建一个接口,协助创建其它对象 2.优缺点 优: a.用户只需要知道这个工厂是创建哪种对象的,不需要知道创建的过程 b.满足开闭原则(开闭原则:对扩展开放,对修改关闭,即增加类可以...

wen123
38分钟前
6
0
Bootstrap Table -detailView和detailFilter的使用

查看表格 detailFilter 属性:data-detail-filter Type:Function Default:function(index,row){ return true} detailView 属性:data-detail-view Type:Boolean Default:false <table id="ta......

tianyawhl
42分钟前
4
0
场效应管的注意事项

  (1)为了安全使用场效应管,在线路的设计中不能超过管的耗散功率,最大漏源电压、最大栅源电压和最大电流等参数的极限值。   (2)各类型场效应管在使用时,都要严格按要求的偏置接入...

仙溪
45分钟前
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部