comparator的用法
在mapreduce中,用户提交的作业放到Map容器中,那么它是怎样对其中的job进行排序的呢?
最重要的是我们首先要写好自己的Comparator,下面我通过一个简单的例子来进行分析容器中元素排序过程。
- 首先,建一个Job类用来描述用户提交的作业。
-
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 }
-
- 编写测试类。
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()); } } }