/** * 排序并且按区间值划分 * * @param groups */ public void orderAndRange() { if (groups == null || groups.size() == 0) { return; } if (groups.size() == 1) { groups.get(0).setRange(new NumberRange(0, Long.MAX_VALUE)); } // 超过2条路由组按区间值划分 // 必须按照StartId ASC排序 Collections.sort(groups, this); for (int i = 0; i < groups.size(); i++) { RoutingGroup tmp = groups.get(i); Long nextSi = getStartId(i, Direction.NEXT); Long si = getStartId(i, Direction.INPLACE); tmp.setRange(new NumberRange(si, nextSi)); } }
@Override public int compare(RoutingGroup o1, RoutingGroup o2) { return o1.getStartId().intValue() - o2.getStartId().intValue(); }