Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprenda Restrição e Omissão de Elementos com os Métodos limit() e skip() | Operações Intermediárias na Stream API
Stream API

bookRestrição e Omissão de Elementos com os Métodos limit() e skip()

A Java Stream API oferece métodos convenientes para trabalhar com coleções de dados. Dois métodos úteis, limit() e skip(), permitem controlar quantos elementos são processados em um stream ou ignorar uma certa quantidade de elementos, o que pode ser útil para otimizar o desempenho ao lidar com grandes volumes de dados.

O que são esses métodos?

Main.java

Main.java

copy
1234567891011121314151617181920
package com.example; import java.util.Arrays; import java.util.List; import java.util.stream.Stream; public class Main { public static void main(String[] args) { List<String> products = Arrays.asList( "Item 1", "Item 2", "Item 3", "Item 4", "Item 5", "Item 6", "Item 7", "Item 8", "Item 9", "Item 10", "Item 11", "Item 12" ); // Limit processing to the first 10 items products.stream() .limit(10) .forEach(System.out::println); // Output: Item 1, Item 2, ..., Item 10 } }

Neste exemplo, utiliza-se limit(10) para restringir o stream aos primeiros 10 elementos, garantindo que apenas esses itens sejam processados.

Main.java

Main.java

copy
1234567891011121314151617181920
package com.example; import java.util.Arrays; import java.util.List; import java.util.stream.Stream; public class Main { public static void main(String[] args) { List<String> products = Arrays.asList( "Item 1", "Item 2", "Item 3", "Item 4", "Item 5", "Item 6", "Item 7", "Item 8", "Item 9", "Item 10", "Item 11", "Item 12" ); // Skip the first 5 items and process the rest products.stream() .skip(5) // Skips the first 5 items .forEach(System.out::println); // Output: Item 6, Item 7, ..., Item 12 } }

Aqui, utiliza-se skip(5) para ignorar os cinco primeiros itens e iniciar o processamento a partir do sexto item.

Exemplo do Mundo Real

Imagine que você trabalha em uma fábrica com uma lista de 50 peças que precisam de inspeção. É necessário verificar apenas as primeiras 10 peças, enquanto outro especialista cuida do restante. Nesse caso, pode-se utilizar limit(10).

Se as primeiras 20 peças já foram inspecionadas e é preciso começar a partir da peça 21, pode-se utilizar skip(20).

Agora, vamos implementar esse cenário em código.

Aplicação Prática

Em uma fábrica, é necessário processar peças. Há uma lista de 50 peças e é preciso pular as primeiras 20, depois processar as próximas 10.

Main.java

Main.java

copy
12345678910111213141516171819202122232425262728293031323334353637
package com.example; import java.util.UUID; import java.util.function.Supplier; import java.util.stream.Stream; public class Main { public static void main(String[] args) { // Supplier for generating parts Supplier<Part> partSupplier = () -> new Part( (int) (Math.random() * 1000), "Part-" + UUID.randomUUID() ); // Create a stream of 50 parts, skip the first 20, and process the next 10 Stream.generate(partSupplier) .limit(50) // Limit the stream to 50 parts .skip(20) // Skip the first 20 .limit(10) // Process the next 10 .forEach(System.out::println); // Print the parts } } class Part { private int id; private String name; Part(int id, String name) { this.id = id; this.name = name; } @Override public String toString() { return "Part{id=" + id + ", name='" + name + "'}"; } }

Neste código, utiliza-se um Supplier para criar dinamicamente objetos Part. A biblioteca UUID auxilia na geração de identificadores únicos para cada peça.

Utilizando Stream.generate(partSupplier), que recebe nosso Supplier, é criado um stream de peças que continua gerando elementos até ser limitado com limit(50).

Em seguida, skip(20) garante que as primeiras 20 peças sejam ignoradas, enquanto limit(10) processa apenas as próximas 10 peças.

Essa abordagem permite uma geração e processamento de dados eficiente, sem a necessidade de armazenar toda a lista na memória.

1. O que o método limit(n) faz em um stream?

2. Qual interface é utilizada para gerar elementos em um stream com Stream.generate()?

3. Qual método ignora os primeiros n elementos em um stream?

question mark

O que o método limit(n) faz em um stream?

Select the correct answer

question mark

Qual interface é utilizada para gerar elementos em um stream com Stream.generate()?

Select the correct answer

question mark

Qual método ignora os primeiros n elementos em um stream?

Select the correct answer

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 2. Capítulo 9

Pergunte à IA

expand

Pergunte à IA

ChatGPT

Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo

Awesome!

Completion rate improved to 2.33

bookRestrição e Omissão de Elementos com os Métodos limit() e skip()

Deslize para mostrar o menu

A Java Stream API oferece métodos convenientes para trabalhar com coleções de dados. Dois métodos úteis, limit() e skip(), permitem controlar quantos elementos são processados em um stream ou ignorar uma certa quantidade de elementos, o que pode ser útil para otimizar o desempenho ao lidar com grandes volumes de dados.

O que são esses métodos?

Main.java

Main.java

copy
1234567891011121314151617181920
package com.example; import java.util.Arrays; import java.util.List; import java.util.stream.Stream; public class Main { public static void main(String[] args) { List<String> products = Arrays.asList( "Item 1", "Item 2", "Item 3", "Item 4", "Item 5", "Item 6", "Item 7", "Item 8", "Item 9", "Item 10", "Item 11", "Item 12" ); // Limit processing to the first 10 items products.stream() .limit(10) .forEach(System.out::println); // Output: Item 1, Item 2, ..., Item 10 } }

Neste exemplo, utiliza-se limit(10) para restringir o stream aos primeiros 10 elementos, garantindo que apenas esses itens sejam processados.

Main.java

Main.java

copy
1234567891011121314151617181920
package com.example; import java.util.Arrays; import java.util.List; import java.util.stream.Stream; public class Main { public static void main(String[] args) { List<String> products = Arrays.asList( "Item 1", "Item 2", "Item 3", "Item 4", "Item 5", "Item 6", "Item 7", "Item 8", "Item 9", "Item 10", "Item 11", "Item 12" ); // Skip the first 5 items and process the rest products.stream() .skip(5) // Skips the first 5 items .forEach(System.out::println); // Output: Item 6, Item 7, ..., Item 12 } }

Aqui, utiliza-se skip(5) para ignorar os cinco primeiros itens e iniciar o processamento a partir do sexto item.

Exemplo do Mundo Real

Imagine que você trabalha em uma fábrica com uma lista de 50 peças que precisam de inspeção. É necessário verificar apenas as primeiras 10 peças, enquanto outro especialista cuida do restante. Nesse caso, pode-se utilizar limit(10).

Se as primeiras 20 peças já foram inspecionadas e é preciso começar a partir da peça 21, pode-se utilizar skip(20).

Agora, vamos implementar esse cenário em código.

Aplicação Prática

Em uma fábrica, é necessário processar peças. Há uma lista de 50 peças e é preciso pular as primeiras 20, depois processar as próximas 10.

Main.java

Main.java

copy
12345678910111213141516171819202122232425262728293031323334353637
package com.example; import java.util.UUID; import java.util.function.Supplier; import java.util.stream.Stream; public class Main { public static void main(String[] args) { // Supplier for generating parts Supplier<Part> partSupplier = () -> new Part( (int) (Math.random() * 1000), "Part-" + UUID.randomUUID() ); // Create a stream of 50 parts, skip the first 20, and process the next 10 Stream.generate(partSupplier) .limit(50) // Limit the stream to 50 parts .skip(20) // Skip the first 20 .limit(10) // Process the next 10 .forEach(System.out::println); // Print the parts } } class Part { private int id; private String name; Part(int id, String name) { this.id = id; this.name = name; } @Override public String toString() { return "Part{id=" + id + ", name='" + name + "'}"; } }

Neste código, utiliza-se um Supplier para criar dinamicamente objetos Part. A biblioteca UUID auxilia na geração de identificadores únicos para cada peça.

Utilizando Stream.generate(partSupplier), que recebe nosso Supplier, é criado um stream de peças que continua gerando elementos até ser limitado com limit(50).

Em seguida, skip(20) garante que as primeiras 20 peças sejam ignoradas, enquanto limit(10) processa apenas as próximas 10 peças.

Essa abordagem permite uma geração e processamento de dados eficiente, sem a necessidade de armazenar toda a lista na memória.

1. O que o método limit(n) faz em um stream?

2. Qual interface é utilizada para gerar elementos em um stream com Stream.generate()?

3. Qual método ignora os primeiros n elementos em um stream?

question mark

O que o método limit(n) faz em um stream?

Select the correct answer

question mark

Qual interface é utilizada para gerar elementos em um stream com Stream.generate()?

Select the correct answer

question mark

Qual método ignora os primeiros n elementos em um stream?

Select the correct answer

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 2. Capítulo 9
some-alt