code: public static List<Integer> sequence(final int start, int end, final int step) {
  
          final int size = (end-start)/step;
          if(size<0)  throw new IllegalArgumentException("List size is negative");
  
          return new AbstractList<Integer>() {
              public Integer get(int index) {
                  if(index<0 || index>=size)
                      throw new IndexOutOfBoundsException();
                  return start+index*step;
              }
  
              public int size() {
                  return size;
              }
          };
      }
docs: Returns a list that represents [start,end).
  
  For example sequence(1,5,1)={1,2,3,4}, and sequence(7,1,-2)={7.5,3}
  
  @since 1.150