Stream流

Stream常用方法

 

 Stream流的创建

复制代码
package com.stream;

import org.junit.Test;

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

/**
 * Stream流的五种创建方式
 */
public class StreamGenerator {
    //1.基于数组进行创建
    @Test
    public void generator1(){
        String[] arr = {"Lily","Andy","Jacjson","Smith"};
        Stream<String> stream = Stream.of(arr);
        stream.forEach(s-> System.out.println(s));
    }
    //2.基于集合进行创建
    @Test
    public void generator2(){
        List<String> list = new ArrayList<>();
        list.add("Lily");
        list.add("Andy");
        list.add("Jacjson");
        list.add("Smith");
        Stream<String> stream = list.stream();
        stream.forEach(s-> System.out.println(s));
    }
    //3.利用generate方法创建无限长度流
    @Test
    public void generator3(){
        //()表示不需要参数
        Stream<Integer> stream = Stream.generate(() -> new Random().nextInt(100000));
        stream.limit(10).forEach(i-> System.out.println(i));
    }
    //4.基于迭代器创建流
    @Test
    public void generator4(){
        //Stream.iterate两个参数分别是起始值、步长
        Stream<Integer> stream = Stream.iterate(1, n -> n + 1);
        stream.limit(100).forEach(i-> System.out.println(i));
    }
    //5.基于字符序列创建流
    @Test
    public void generator5(){
        String str="abcdefg我的";
        IntStream stream = str.chars();
        stream.forEach(c-> System.out.print((char) c+" "));
    }
}
复制代码

Stream常用方法

复制代码
package com.stream;

import org.junit.Test;

import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

public class StreamMethod {
    //提取集合中的所有偶数求和
    @Test
    public void case1(){
        List<String> list = Arrays.asList("1", "2", "3", "4", "5","6");
        int sum = list.stream()
                .mapToInt(s -> Integer.parseInt(s)) //mapToInt将流中的每一个数据转换成Int
                .filter(n -> n % 2 == 0)
                .sum();
        System.out.println(sum);
    }
    //所有名字首字母大写
    @Test
    public void case2(){
        List<String> list=Arrays.asList("lily","tom","jackson");
        List<String> newList = list.stream()
                //按规则对每一个数据进行转换
                .map(s -> s.substring(0, 1).toUpperCase() + s.substring(1))
                //collect对流数据进行收集,生成新的List/Set
                .collect(Collectors.toList());
        System.out.println(newList);
    }
    @Test
    //将所有奇数从大到小进行排序,且不允许出现重复
    public void case3(){
        List<Integer> list = Arrays.asList(1,60,38,51,60,51,73);
        List<Integer> newList = list.stream().distinct()//可去除重复的流数据
                .filter(n -> n % 2 == 1)
                .sorted((a, b) -> b - a) //排序
                .collect(Collectors.toList());
        System.out.println(newList);
    }
}
复制代码

 

posted @   南风知君  阅读(31)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
点击右上角即可分享
微信分享提示