comparator的用法

  在mapreduce中,用户提交的作业放到Map容器中,那么它是怎样对其中的job进行排序的呢?

  最重要的是我们首先要写好自己的Comparator,下面我通过一个简单的例子来进行分析容器中元素排序过程。

  1.   首先,建一个Job类用来描述用户提交的作业。
    1.  1 package com.comparator.test;
       2 
       3 public class Job {
       4     private Long startTime;
       5 
       6     public Long getStartTime() {
       7         return startTime;
       8     }
       9 
      10     public void setStartTime(Long startTime) {
      11         this.startTime = startTime;
      12     }
      13 }
  2. 编写测试类。    
package com.comparator.test;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;


public class MyComparatorTest {

//实现自己的Comparator,只是根据job的开始时间进行排序
static final Comparator<Job> MY_COMPARATOR = new Comparator<Job>() { public int compare(Job o1, Job o2) { if(o1.getStartTime()<o2.getStartTime()){ return -1; }else{ return 1; } } }; public static void main(String args[]){


//初始化job,并放入到一个容器中 List
<Job> jobs= new ArrayList<Job>(); Job job1= new Job(); job1.setStartTime(System.currentTimeMillis()); jobs.add(job1); Job job2= new Job(); job2.setStartTime(System.currentTimeMillis()+9); jobs.add(job2);
//用自己编写的Comparator对jobs容器进行排序 Collections.sort(jobs, MY_COMPARATOR);
for(Job job:jobs){ System.out.println(job.getStartTime()); } } }

 

posted @ 2013-05-04 09:46  华电岳黎明  阅读(419)  评论(0编辑  收藏  举报