分组排序步骤:ide
WritableComparator
类 (区别于自定义数据类型时是实现WritableComparable
接口)重写compare()方法,由于排序后的第一个key将做为该组的key值, 所以也根据业务实现compare函数
@override public int compare(WritableComparable a, WritableComparable b){ // 比较的逻辑 return result; }
建立一个构造将比较对象的类传给父类code
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; } }