code: private static List<Integer> parseRange(String range, int max) {
          List<Integer> idx = new ArrayList<Integer>();
          String[] n = range.split(",");
          for (String s : n) {
              String[] d = s.split("-");
              int mi = Integer.parseInt(d[0]);
              if (mi < 0 || mi >= max) {
                  throw new IllegalArgumentException(range);
              }
              if (d.length == 2) {
                  if (d[1].equals("*")) {
                      d[1] = Integer.toString(max - 1);
                  }
                  int ma = Integer.parseInt(d[1]);
                  if (ma <= mi || ma >= max || ma < 0) {
                      throw new IllegalArgumentException(range);
                  }
                  for (int i = mi; i <= ma; i++) {
                      idx.add(i);
                  }
              } else {
                  idx.add(mi);
              }
          }
          return idx;
      }
docs: Integer[] idx = rangeparser("1,3-5,6,7-*",20);