- 场景一:分页查询场景
- 在数据库查询后返回的结果集可能很大,我们需要将其分页展示给用户。例如,在一个博客系统中,查询文章列表时,只返回第一页的10篇文章。
- 代码示例:
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
class Article {
private String title;
public Article(String title) {
this.title = title;
}
public String getTitle() {
return title;
}
}
public class StreamLimitExample {
public static void main(String[] args) {
List<Article> articleList = new ArrayList<>();
articleList.add(new Article("Article 1"));
articleList.add(new Article("Article 2"));
articleList.add(new Article("Article 3"));
articleList.add(new Article("Article 4"));
articleList.add(new Article("Article 5"));
articleList.add(new Article("Article 6"));
articleList.add(new Article("Article 7"));
articleList.add(new Article("Article 8"));
articleList.add(new Article("Article 9"));
articleList.add(new Article("Article 10"));
articleList.add(new Article("Article 11"));
List<Article> firstPageArticles = articleList.stream()
.limit(10)
.collect(Collectors.toList());
firstPageArticles.forEach(article -> System.out.println(article.getTitle()));
}
}
- 场景二:处理大量数据时取前N个符合条件的数据
- 比如在一个销售数据系统中,要找出销售额最高的前5个产品,以便重点分析。
- 代码示例:
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.stream.Collectors;
class Product {
private String name;
private double sales;
public Product(String name, double sales) {
this.name = name;
this.sales = sales;
}
public String getName() {
return name;
}
public double getSales() {
return sales;
}
}
public class StreamLimitTopSalesExample {
public static void main(String[] args) {
List<Product> productList = new ArrayList<>();
productList.add(new Product("Product A", 1000.0));
productList.add(new Product("Product B", 1500.0));
productList.add(new Product("Product C", 800.0));
productList.add(new Product("Product D", 2000.0));
productList.add(new Product("Product E", 1200.0));
productList.add(new Product("Product F", 900.0));
List<Product> top5Products = productList.stream()
.sorted(Comparator.comparingDouble(Product::getSales).reversed())
.limit(5)
.collect(Collectors.toList());
top5Products.forEach(product -> System.out.println(product.getName() + " - " + product.getSales()));
}
}