在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 ComparatorMY_COMPARATOR = new Comparator () { public int compare(Job o1, Job o2) { if(o1.getStartTime() jobs= new ArrayList (); 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()); } }}