Java Stream Exercise(3) (2024.7.29)

        StreamExercise3

package StreamExercise20240729;

import java.util.ArrayList;
import java.util.List;
import java.util.stream.Stream;

public class StreamExercise3 {
    public static void main(String[] args) {
        // Stream流中的中间方法
        List<String> list =new ArrayList<>(List.of("张三丰","张无忌","王翠山","王二麻子","张良","谢广坤"));
        List<String> list2 =new ArrayList<>(List.of("张三","李四","王五","赵六","钱七","周八","张三"));

        // filter过滤:可以对流中的数据进行过滤,符合条件的(true)保留,false则过滤
        list.stream().filter(s -> s.startsWith("王")).filter(s -> s.length() == 4).forEach(s -> System.out.println(s));
        System.out.println("--------------------------------------");

        // limit截取:截取前指定参数个数据,返回流中符合条件元素组成的流
        list.stream().limit(4).forEach(s -> System.out.println(s)); // 用limit截取前流中前4个元素
        System.out.println("--------------------------------------");

        // skip跳过:跳过指定参数个数据,返回由该流跳过后剩余元素组成的流
        list.stream().skip(3).forEach(s -> System.out.println(s)); // 跳过前流中前3个元素
        System.out.println("--------------------------------------");

        // concat合并:将a流和b流合并为同一个流
        Stream<String> stream1 = list.stream();
        Stream<String> stream2 = list2.stream();
        Stream<String> stream3 = Stream.concat(stream1, stream2); // 将stream1和stream2中两个流合成了一个流stream3
        stream3.forEach(s -> System.out.println(s));
        System.out.println("--------------------------------------");


        // distinct去重:将stream流中的重复数据去除,保留非重复的数据(依靠equals方法)
        // stream2.distinct().forEach(s -> System.out.println(s));
        // 上面虽然有stream2流,但是stream只能使用一次,上面已经使用过,所以说stream2此处无法继续使用,否则将报错
        list2.stream().distinct().forEach(s -> System.out.println(s)); // 成功去重
    }
}

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
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); } } ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值