347 }; |
347 }; |
348 } |
348 } |
349 |
349 |
350 // Stateful intermediate ops from LongStream |
350 // Stateful intermediate ops from LongStream |
351 |
351 |
352 private LongStream slice(long skip, long limit) { |
|
353 return SliceOps.makeLong(this, skip, limit); |
|
354 } |
|
355 |
|
356 @Override |
352 @Override |
357 public final LongStream limit(long maxSize) { |
353 public final LongStream limit(long maxSize) { |
358 if (maxSize < 0) |
354 if (maxSize < 0) |
359 throw new IllegalArgumentException(Long.toString(maxSize)); |
355 throw new IllegalArgumentException(Long.toString(maxSize)); |
360 return slice(0, maxSize); |
356 return SliceOps.makeLong(this, 0, maxSize); |
361 } |
357 } |
362 |
358 |
363 @Override |
359 @Override |
364 public final LongStream substream(long startingOffset) { |
360 public final LongStream skip(long n) { |
365 if (startingOffset < 0) |
361 if (n < 0) |
366 throw new IllegalArgumentException(Long.toString(startingOffset)); |
362 throw new IllegalArgumentException(Long.toString(n)); |
367 if (startingOffset == 0) |
363 if (n == 0) |
368 return this; |
364 return this; |
369 else |
365 else |
370 return slice(startingOffset, -1); |
366 return SliceOps.makeLong(this, n, -1); |
371 } |
|
372 |
|
373 @Override |
|
374 public final LongStream substream(long startingOffset, long endingOffset) { |
|
375 if (startingOffset < 0 || endingOffset < startingOffset) |
|
376 throw new IllegalArgumentException(String.format("substream(%d, %d)", startingOffset, endingOffset)); |
|
377 return slice(startingOffset, endingOffset - startingOffset); |
|
378 } |
367 } |
379 |
368 |
380 @Override |
369 @Override |
381 public final LongStream sorted() { |
370 public final LongStream sorted() { |
382 return SortedOps.makeLong(this); |
371 return SortedOps.makeLong(this); |