java.util.stream.Stream介绍

java.util.stream.Stream 是 Java 8 中引入的一个重要类,用于支持对集合元素进行处理的功能。它提供了一种声明式的方式来操作集合数据,使得代码更加清晰、简洁。

import java.util.stream.Stream;

public class Main {
    public static void main(String[] args) {	
    	 // 创建一个流
        Stream<String> stream = Stream.of("Java", "Python", "C++", "JavaScript", "Ruby");

        // 1. 遍历流中的元素
        stream.forEach(System.out::println);

        // 注意:流只能被消费一次,如果再次使用该流会抛出 IllegalStateException
        // stream.forEach(System.out::println); // 这会抛出异常

        // 2. 过滤出长度大于3的字符串,并打印
        Stream<String> filteredStream = Stream.of("Java", "Python", "C++", "JavaScript", "Ruby")
                                                .filter(s -> s.length() > 3);
        filteredStream.forEach(System.out::println);

        // 3. 映射操作:将字符串转换为大写并打印
        Stream<String> mappedStream = Stream.of("Java", "Python", "C++", "JavaScript", "Ruby")
                                             .map(String::toUpperCase);
        mappedStream.forEach(System.out::println);

        // 4. 统计流中元素的个数
        long count = Stream.of("Java", "Python", "C++", "JavaScript", "Ruby").count();
        System.out.println("Total elements: " + count);

        // 5. 使用 Stream.generate() 生成无限流,并限制输出个数
        Stream.generate(() -> "Hello")
                .limit(3)
                .forEach(System.out::println);

        // 6. 使用 Stream.iterate() 生成斐波那契数列
        Stream.iterate(new int[]{0, 1}, fib -> new int[]{fib[1], fib[0] + fib[1]})
                .limit(10)
                .forEach(fib -> System.out.print(fib[0] + " "));
    }
}

示例代码中,我们展示了创建流、遍历流中的元素、过滤、映射、统计元素个数、生成有限流和生成斐波那契数列等常见操作。这些操作可以帮助你更有效地处理集合数据。

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java 8引入了java.util.stream.Collectors类,它实现了java.util.stream.Collector接口,并提供了许多方法来对流的元素执行map和reduce操作,或者进行统计操作。 以下是java.util.stream.Collectors类的一些常用方法: 1. toList():将流中的所有元素导出到一个列表中。 ```java import java.util.List; import java.util.stream.Collectors; import java.util.stream.Stream; public class ToListTest { public static void main(String[] args) { List<String> list = Stream.of("AA", "BB", "CC").collect(Collectors.toList()); list.forEach(s -> System.out.println(s)); } } ``` 2. toSet():将流中的所有元素导出到一个集合中,去除重复元素。 ```java import java.util.Set; import java.util.stream.Collectors; import java.util.stream.Stream; public class ToSetTest { public static void main(String[] args) { Set<String> set = Stream.of("AA", "BB", "CC").collect(Collectors.toSet()); set.forEach(s -> System.out.println(s)); } } ``` 3. toMap():将流中的元素导出到一个Map中,可以指定key和value的映射关系。 ```java import java.util.Map; import java.util.stream.Collectors; import java.util.stream.Stream; public class ToMapTest { public static void main(String[] args) { Map<String, Integer> map = Stream.of("AA", "BB", "CC").collect(Collectors.toMap(s -> s, s -> s.length())); map.forEach((k, v) -> System.out.println(k + ": " + v)); } } ``` 4. joining():将流中的元素连接成一个字符串。 ```java import java.util.stream.Collectors; import java.util.stream.Stream; public class JoiningTest { public static void main(String[] args) { String result = Stream.of("AA", "BB", "CC").collect(Collectors.joining(", ")); System.out.println(result); } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值