public int compare(PriceListItem o1, PriceListItem o2) { if (sortOrder.size() > 0) { int o1i = sortOrder.indexOf(o1.IdDatStr()); int o2i = sortOrder.indexOf(o2.IdDatStr()); if (o1i != -1 && o2i != -1) { return o2i - o1i; } else if (o1i != -1) { return -1; } else if (o2i != -1) { return 1; } } return (o1.ID() * 100 - o2.ID() * 100 + o1.Data() - o2.Data()) * (descending ? 1 : -1); }