分组排序步骤:
- 自定义类继承
WritableComparator
类 (区别于自定义数据类型时是实现WritableComparable
接口) -
重写compare()方法,因为排序后的第一个key将作为该组的key值, 因此也根据业务实现compare
@override public int compare(WritableComparable a, WritableComparable b){ // 比较的逻辑 return result; }
-
创建一个构造将比较对象的类传给父类
protected YourGroupingComparator(){ // GroupingComparator类有key1 key2 两个成员函数 // 不设 true将会把GroupingComparator实例的两个key值设为null 会报错 // 设为true 则会实例化两个key值 super(YourDataType.class, true); }
实例代码:
需求 :
自定义的WritableComparable
数据类型 为OderBean
包括order_id(String)
,Price(double)
成员函数
需要把将具有相同order_id
的分为一个组
Public class OrderGroupingComparator extend WritableComparator{
protected OrderGroupingComparator(){
super(OrderBean.class, true);
}
@override
public int compare(WritableComparable a, WritableComparable b){
// 强制类型转换为子类
OrderBean aBean = (OrderBean) a ;
OrderBean bBean = (OrderBean) b ;
int result;
if(a.getOrder_id()>b.getOrder_id()) result = 1;
else if(a.getOrder_id()< b.getOrder_id()) result=-1;
else result = 0;
return result;
}
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。