使用Comparator对ArrayList进行排序

原创 2007年09月13日 12:55:00
用Comparator是策略模式(strategy   design   pattern),就是不改变对象自身,而用一个策略对象(strategy   object)来改变它的行为。  
   
  比如:你想对整数采用绝对大小来排序,Integer是不符合要求的,你不需要去修改Integer类(实际上你也不能这么做)去改变它的排序行为,只要使用一个实现了Comparator接口的对象来实现控制它的排序就行了。  
   
  //AbsComparator.java  
  import   java.util.*;  
  public   class   AbsComparator   implements   Comparator   {  
      public   int   compare(Object   o1,   Object   o2)   {  
          int   v1   =   Math.abs(((Integer)o1).intValue());  
          int   v2   =   Math.abs(((Integer)o2).intValue());  
          return   v1   >   v2   ?   1   :   (v1   ==   v2   ?   0   :   -1);  
      }  
  }  
   
  可以用下面这个类测试AbsComparator:  
   
  //Test.java  
  import   java.util.*;  
   
  public   class   Test   {  
      public   static   void   main(String[]   args)   {  
   
          //产生一个20个随机整数的数组(有正有负)  
          Random   rnd   =   new   Random();  
          Integer[]   integers   =   new   Integer[20];  
          for(int   i   =   0;   i   <   integers.length;   i++)  
          integers[i]   =   new   Integer(rnd.nextInt(100)   *   (rnd.nextBoolean()   ?   1   :   -1));  
   
          System.out.println("用Integer内置方法排序:");  
          Arrays.sort(integers);  
          System.out.println(Arrays.asList(integers));  
   
          System.out.println("用AbsComparator排序:");  
          Arrays.sort(integers,   new   AbsComparator());  
          System.out.println(Arrays.asList(integers));  
      }  
  }    

ArrayList容器排序 comparator接口与comparable接口的使用

1、实体类实现comparable接口,重写compareTo方法 package io; import java.text.DateFormat; import java.text.ParseEx...
  • chunxiaqiudong5
  • chunxiaqiudong5
  • 2016年10月08日 20:03
  • 785

java中用Comparator比较器对ArrayList排序

boy 男生 对象
  • zmywly
  • zmywly
  • 2014年09月28日 19:27
  • 5140

Android记录14--自定义Comparator,实现List按时间排序

Android记录14--自定义Comparator,实现List按时间排序 2013年12月16日 16点32分 package com.suntek.mobilemee...
  • wwj_748
  • wwj_748
  • 2013年12月16日 16:37
  • 8767

再谈Comparator-使用lambda表达式

关于Comparable和Comparator 的区别以及作用: 1. Java 中 Comparable 和 Comparator 比较 - 如果天空不死 - 博客园 2. 深入理解J...
  • simplebam
  • simplebam
  • 2017年06月17日 21:35
  • 597

Java ArrayList的自定义排序

Java ArrayList的自定义排序
  • Tc_To_Top
  • Tc_To_Top
  • 2016年09月13日 15:00
  • 4921

浅谈Java的Comparator接口实现自定义排序Arrays.sort()

使用Comparator接口:编写多个排序方式类实现Comparator接口,并重写新Comparator接口中的compare()方法。 题目描述: 从A、B、C、D、E5个方面对每一家酒店进行评...
  • zhouziyu2011
  • zhouziyu2011
  • 2017年04月01日 22:36
  • 2292

TreeMap Comparator按照首字母排序

/** * @Modified by FANGYUKANG * @Description 查询配件类型列表 * @return {@link JsonView} * * URL ...
  • weinichendian
  • weinichendian
  • 2016年05月24日 15:24
  • 1127

对ArrayList中的元素按照某一列进行排序

对ArrayList中的元素按照某一列进行排序 博客分类:  java   对ArrayList中的元素进行排序,主要考查的是对util包中的Comparator接口和Co...
  • liweiahut
  • liweiahut
  • 2016年09月25日 13:34
  • 263

java中使用sort()对ArrayList进行排序

java中的ArrayList需要通过collections类的sort方法来进行排序 如果想自定义排序方式则需要有类来实现Comparator接口并重写compare方法 调用sort方法时将A...
  • tuolaji8
  • tuolaji8
  • 2015年09月13日 19:53
  • 10632

JAVA Comparator 接口排序用法

java的比较器有两类,分别是Comparable接口和Comparator接口。 在为对象数组进行排序时,比较器的作用非常明显,首先来讲解Comparable接口。 让需要进行排序的对象...
  • u010839723
  • u010839723
  • 2015年03月16日 09:36
  • 6024
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:使用Comparator对ArrayList进行排序
举报原因:
原因补充:

(最多只允许输入30个字)