java stream 积累

stream常见方法

Stream 流提供了丰富的操作方法,可以对集合中的元素进行聚合、筛选、变换等操作,常见的方法包括以下几种:

1.filter(Predicate predicate):过滤流中的元素,保留符合条件的元素。
2.map(Function<T, R> mapper):对流中的每个元素进行操作,生成新的元素流。
3.reduce(T identity, BinaryOperator accumulator):将流中的所有元素按照某种规则进行聚合。
4.collect(Collector<T, A, R> collector):将流中的元素收集到一个容器中,生成新的集合。
5.sorted(Comparator comparator):对流中的元素进行排序。
6.distinct():去除流中的重复元素。
7.limit(long maxSize):限制流的大小,只取前 maxSize 个元素。
8.skip(long n):跳过流中的前 n 个元素,返回剩余的元素流。
9.forEach(Consumer action):对流中的每个元素执行指定的操作。

案例

1.过滤列表 strings 中为空的字符串,将非空字符串收集到一个新的列表 filtered 中
List<String> strings = Arrays.asList("abc", "", "bc", "efg", "abcd","", "jkl");
List<String> filtered = strings.stream().filter(string -> !string.isEmpty()).collect(Collectors.toList());
System.out.println(filtered);

输出:[abc, bc, efg, abcd, jkl]

2.将列表 numbers 中的每个整数取平方,并去除重复的平方数
List<Integer> numbers = Arrays.asList(3, 2, 2, 3, 7, 3, 5);
        // 获取对应的平方数
        List<Integer> squaresList = numbers.stream().map( i -> i*i).distinct().collect(Collectors.toList());
        System.out.println(squaresList);
        
输出:[9, 4, 49, 25]
3.sorted 方法用于对流进行排序。以下代码片段使用 sorted 方法对输出的 10 个随机数进行排序
Random random = new Random();
random.ints().limit(10).sorted().forEach(System.out::println);

输出:-1980825003
	 -1559049498
	 -1286530264
	 -1274252397
	 -1031281323
	 729106121
	 1124506809
	 1632649059
	 1923772168
	 1997033048
4.将 strList 列表转换为一个 strMap 字典,字典中的键是元素在列表中的索引,值是元素本身
List<String> list = Arrays.asList("abc", "gg", "bc", "efg", "abcd","1", "jkl");
Map<Integer, String> collect = list.stream().collect(Collectors.toMap(s -> list.indexOf(s), s -> s));
System.out.println(collect);

输出:{0=abc, 1=gg, 2=bc, 3=efg, 4=abcd, 5=1, 6=jkl}
5.将流中的所有元素按照某种规则进行聚合

0是我们的初始值,(a,b)->ab就是我们的累加器,其中a就是上一次的计算结果,b就是Stream流中当前元素,而后面的ab则是计算规则

List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
int sum = numbers.stream().reduce(0, (a, b) -> a * b);
System.out.println(sum);
输出:0

List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
int sum = numbers.stream().reduce(1, (a, b) -> a * b);
System.out.println(sum);
输出:120

List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
int sum = numbers.stream().reduce(0, (a, b) -> a + b);
System.out.println(sum);
输出:15

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值