public static String toString4SortedIntList()

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();
    }