Java 8 Stream limit, skip
Данная статья написана командой Vertex Academy. Это одна из статей из нашего Учебника по Java 8.
В этой статье мы рассмотрим изменение размера Stream-ов в Java 8
1. Введение
Stream API - новый способ взаимодействия с данными, представляя их в виде конечного потока данных.
Для ограничение количества данных в Stream-е, необходимо использовать методы limit() и skip()
2. Stream limit
Метод limit() оставляет только первые n элементов из Stream-a, где n - заданный параметр. Т.е. если у нас есть Stream из 10 элементов и мы вызвали limit(5), то в Stream останутся первые 5 элементов
1 2 3 4 5 6 7 |
public static void main(String[] args) { List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10); numbers.stream() .limit(5) .forEach(System.out::println); //output 1 2 3 4 5 } |
Если в limit() указать значение больше чем размер Stream-a,то Stream останется без изменений
1 2 3 4 5 6 7 |
public static void main(String[] args) { List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5); numbers.stream() .limit(10) .forEach(System.out::println); //output 1 2 3 4 5 } |
Если указать отрицательное значение в limit() то мы получим IllegalArgumentException
1 2 3 4 5 6 7 |
public static void main(String[] args) { List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5); numbers.stream() .limit(-1) .forEach(System.out::println); // java.lang.IllegalArgumentException: -1 } |
3. Stream skip
Метод skip() пропускает первые n элементов Stream-a, где n - заданный параметр . Т.е. если у нас есть Stream из 10 элементов и мы вызвали skip(5), то в Stream останутся вторые 5 элементов
1 2 3 4 5 6 7 |
public static void main(String[] args) { List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10); numbers.stream() .skip(5) .forEach(System.out::println); //output 6 7 8 9 10 } |
Если в skip() указать значение больше, чем размер Stream-a, то мы получим пустой Stream
1 2 3 4 5 6 7 |
public static void main(String[] args) { List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5); numbers.stream() .skip(10) .forEach(System.out::println); //output is empty } |
Если указать отрицательное значение в skip(), то мы получим IllegalArgumentException
1 2 3 4 5 6 7 |
public static void main(String[] args) { List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5); numbers.stream() .skip(-2) .forEach(System.out::println); //java.lang.IllegalArgumentException: -2 } |
Надеемся, что наша статья была Вам полезна. Также есть возможность записаться на наши курсы по Java в Киеве. Детальную информацию Вы можете найти у нас на сайте.