in src/main/java/com/uber/rss/util/StringUtils.java [75:129]
public static <T extends Number> String toString4SortedIntList(List<T> list) {
if (list == null || list.isEmpty()) {
return "";
}
StringBuilder sb = new StringBuilder();
boolean first = true;
T rangeStart = null;
T rangeEnd = null;
for (T v: list) {
if (rangeStart == null) {
rangeStart = v;
} else if (rangeEnd == null) {
if (v.longValue() == rangeStart.longValue() + 1) {
rangeEnd = v;
} else {
if (!first) {
sb.append(",");
}
sb.append(rangeStart);
first = false;
rangeStart = v;
}
} else if (rangeEnd.longValue() == v.longValue() - 1){
rangeEnd = v;
} else {
// got one range, put input StringBuilder
if (!first) {
sb.append(",");
}
sb.append(String.format("%s-%s", rangeStart, rangeEnd));
first = false;
// start new range
rangeStart = v;
rangeEnd = null;
}
}
if (rangeStart == null) {
return sb.toString();
} else if (rangeEnd == null) {
if (!first) {
sb.append(",");
}
sb.append(rangeStart);
return sb.toString();
} else {
if (!first) {
sb.append(",");
}
sb.append(String.format("%s-%s", rangeStart, rangeEnd));
}
return sb.toString();
}