Stream流的中间方法和收集

stream流的中间方法

1. filter() 过滤

2. skip()  跳过前面的数据,只保留后面的数据

3. limit() 只保留前面的数据

4. concat()  合并

5. map() 转换数据类型

6. distinct() 元素去重

代码展示:

package com.atxiaoyao.stream;

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


public class StreamDemo1 {
    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<>();
        Collections.addAll(list,"刘备","曹操","孙权","袁绍","卢布","关羽","马良","刘邦","刘璋","孙权","关羽");

        ArrayList<String> list2 = new ArrayList<>();
        Collections.addAll(list2,"貂蝉","西施","玉环","昭君");

        ArrayList<String> list3 = new ArrayList<>();
        Collections.addAll(list3,"东方不败-1-25","令狐冲-0-22","余不群-1-50","林平之-1-23","田伯光-0-35");

        /*
         * @Author Shang
         * @Description  stream流的中间方法
         * @Data 2023/7/29 21:27
         * @Param [args]
                */
        // filter 过滤
        list.stream()
                .filter(s -> s.startsWith("刘"))
                .forEach(s -> System.out.println("streamFilter = " + s));

        // skip() 跳过前面的,保留后面的
        list.stream()
                .skip(3).
                forEach(s -> System.out.println("streamSkip = " + s));

        // limit() 保留前面的,后面的丢掉
        list.stream()
                .limit(4)
                .forEach(s -> System.out.println("streamLimit = " + s));

        // distinct() 元素去重  底层使用了HashSet()去重,依赖hashCode和equals方法
        list.stream()
                .distinct()
                .forEach(s -> System.out.println("streamDistinct = " + s));

        // concat() 合并两个流为一个流
        Stream.concat(list.stream(),list2.stream())
                .forEach(s -> System.out.println("streamConcat = " + s));

        // map() 转换数据类型
        list3.stream()
                .map(s -> Integer.parseInt(s.split("-")[2]))
                .forEach(s-> System.out.println("streamMap = " + s));
    }
}

stream流的收集方法

1. toList();   收集到list集合中

2. toSet();  收集到set集合中

3. toMap();  收集到map集合中

代码展示:

package com.atxiaoyao.stream;

import java.util.*;
import java.util.stream.Collectors;

public class StreamDemo2 {
    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<>();
        Collections.addAll(list,"杨幂-1","李连杰-0","成龙-0","许嵩-0","周杰伦-0","王腾-0","杨洋-0","成龙-0","杨幂-1");

        ArrayList<String> list1 = new ArrayList<>();
        Collections.addAll(list1,"李连杰-0","成龙-0","许嵩-0","周杰伦-0","王腾-0","杨洋-0","杨幂-1");

        // 收集到list集合中
        // toList();
        List<String> collectList = list.stream()
                .filter(s -> s.startsWith("杨"))
                .collect(Collectors.toList());
        System.out.println("collectList = " + collectList);

        // 收集到set集合中
        // toSet();  元素去重
        Set<String> collectSet = list.stream()
                .collect(Collectors.toSet());
        System.out.println("collectSet = " + collectSet);

        // 收集到map集合中
        // TODO:收集到的数据key不可以重复,重复会报错
        Map<String, Integer> collectMap = list1.stream()
                .filter(s -> "0".equals(s.split("-")[1]))
                .collect(Collectors.toMap(s -> s.split("-")[0], s -> Integer.parseInt(s.split("-")[1])));
        System.out.println("collectMap = " + collectMap);


    }
}

说明:文章技术来源于B站黑马Java基础教程,Java-Stream流从入门到精通。若代码不清晰,可以去看视频学习。非黑马人员,无宣传意味,仅学习而已。

JavaStream的常用方法包括获取Stream中间方法和终结方法。 获取Stream方法有两种:集合获取Stream和数组获取Stream。集合获取Stream可以使用集合类的stream()方法,例如Map的keySet()方法可以获取键,values()方法可以获取值,entrySet()方法可以获取键值对。数组获取Stream可以使用Arrays类的stream()方法,将数组转换为Stream中间方法是对Stream进行操作的方法,一次操作完毕之后,还可以继续进行其他操作。常用的中间方法包括filter()、map()、flatMap()、distinct()、sorted()、limit()和skip()等。filter()方法用于过滤元素,map()方法用于对元素进行映射,flatMap()方法用于扁平化处理,distinct()方法用于去重,sorted()方法用于排序,limit()方法用于限制元素数量,skip()方法用于跳过元素。 终结方法Stream的最后一个操作,一个Stream只能有一个终结方法。常用的终结方法包括forEach()、collect()、count()、min()、max()、reduce()和toArray()等。forEach()方法用于遍历元素,collect()方法用于将元素收集到集合中,count()方法用于统计元素数量,min()方法用于获取最小值,max()方法用于获取最大值,reduce()方法用于对元素进行归约操作,toArray()方法用于将元素转换为数组。 综合应用Stream的常用方法可以实现对数据的筛选、转换、排序、统计等操作,提高代码的简洁性和可读性。 #### 引用[.reference_title] - *1* *2* *3* [Java 基础进阶篇(十二):Stream 常用方法总结](https://blog.csdn.net/weixin_43819566/article/details/130537949)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值