分組排序步驟: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; } }