首页 > 编程语言 >java-Stream流的常用方法

java-Stream流的常用方法

时间:2023-02-07 20:35:13浏览次数:31  
标签:常用 java Stream stream list System add println

一  常见创建流的三种方式

        //list集合创建流方式
        new ArrayList<>().stream();
        new HashSet<>().stream();

        //map集合创建流方式, 原理同list
        HashMap<Object, Object> map = new HashMap<>();
        Stream<Object> stream2 = map.keySet().stream();
        Stream<Object> stream3 = map.values().stream();
        Stream<Map.Entry<Object, Object>> stream4 = map.entrySet().stream();
        
        //数组创建流的方式(可变参数)
        String[] arr = {"hello"};
        Stream.of(arr); 

 

二 stream 中间操作 filter 的使用(过滤操作,过滤后可能会减少数据)

        List<String> list = new ArrayList<>();
        list.add("林青霞");
        list.add("张曼玉");
        list.add("王祖贤");
        list.add("柳岩");
        list.add("张敏");
        list.add("张无忌");
        //以"张"开头的控制台输出
        list.stream().filter(s->s.startsWith("张")).forEach(System.out::println);
        //长度为3的在控制台输出
        list.stream().filter(s->s.length() == 3).forEach(System.out::println);
        //以"张"开头的并长度为3的在控制台输出
        list.stream().filter(s->s.startsWith("张")).filter(s->s.length() == 3).forEach(System.out::println);
"System.out::println" 这种格式的叫方法引用同 "s->System.out.println(s)"

三 Stream 常见的中间操作limit & skip

 List<String> list = new ArrayList<>();
        list.add("林青霞");
        list.add("张曼玉");
        list.add("王祖贤");
        list.add("柳岩");
        list.add("张敏");
        list.add("张无忌");

        //取前三个数据在控制台输出
        list.stream().limit(3).forEach(System.out::println);
        //跳过三个元素把剩余的元素的控制台输出
        list.stream().skip(3).forEach(System.out::println);
        //跳过两个元素,把剩下的元素中前两个元素在控制台输出
        list.stream().skip(2).limit(2).forEach(System.out::println);

 

四 Stream 常见中间操作 concat & distanct

        List<String> list = new ArrayList<>();
        list.add("林青霞");
        list.add("张曼玉");
        list.add("王祖贤");
        list.add("柳岩");
        list.add("张敏");
        list.add("张无忌");
        
        //取前4个组成一个流
        Stream<String> limit = list.stream().limit(4);
        //跳过两个数据组成一个流
        Stream<String> skip = list.stream().skip(2);
        //合并需求1和2流,并把结果在控制台输出
        Stream.concat(limit,skip).forEach(System.out::println);
        //合并需求1和2流,并把结果在控制台输出要求不能重复
        Stream.concat(limit,skip).distinct().forEach(System.out::println);

 

五 Stream 常见中间操作 sorted

        List<String> list = new ArrayList<>();
        list.add("lingqingxia");
        list.add("zhangmanyux");
        list.add("wangzuxianx");
        list.add("liuyan");
        list.add("zhangmin");
        list.add("zhangwuji");

        //按照字母顺序排序在控制台输出
        list.stream().sorted().forEach(System.out::println);
        //按照字符串长度,然后按照字母顺序在控制台输出
        list.stream().sorted((s1,s2)->{
            int num = s1.length() - s2.length();
            return num == 0 ? s1.compareTo(s2) : num;
        }).forEach(System.out::println);

六 Stream 常见中间操作 Map(过滤后数据不会减少 可能修改了某些内容)

List<String> list = new ArrayList<>();
        list.add("01");
        list.add("10");
        list.add("20");
        list.add("30");
        list.add("40");
        list.add("50");

        //对字符进行数据转换
        list.stream().map(Integer::parseInt).forEach(System.out::println);
        //mapToInt 不仅有map属性还带有特殊方法,求和求平均数等操作
        list.stream().mapToInt(s->Integer.parseInt(s)).forEach(System.out::println);
        //mapToInt 转换int并求和
        int sum = list.stream().mapToInt(Integer::parseInt).sum();
        System.out.println(sum);

 

七 Stream 终结操作 foreach & count

 List<String> list = new ArrayList<>();
        list.add("林青霞");
        list.add("张曼玉");
        list.add("王祖贤");
        list.add("柳岩");
        list.add("张敏");
        list.add("张无忌");
        //把集合中的元素在控制台输出控制台上
        list.stream().forEach(System.out::println);
        //把集合中的元素数量输出到控制台上
        long count = list.stream().count();
        System.out.println(count);

 

八 Stream 收集操作collection list

List<String> list = new ArrayList<>();
        list.add("林青霞");
        list.add("张曼玉");
        list.add("王祖贤");
        list.add("柳岩");
        list.add("张敏");
        list.add("张无忌");
        //生成流
        Stream<String> listStream = list.stream().filter(s -> s.length() == 3);
        //生成新的集合
        List<String> stringList = listStream.collect(Collectors.toList());

Collections.toList() 变成list集合

Collections.toSet() 变成set集合

 

九 Stream 收集操作collection map

        String[] arr = {"林青霞,33","张曼玉,28","柳岩,22"};
        Map<String, String> maps = Stream.of(arr).collect(Collectors.toMap(s -> s.split(",")[0], s1 -> s1.split(",")[1]));
        for (Map.Entry<String, String> entry : maps.entrySet()) {
            System.out.println("姓名:"+entry.getKey()+",年龄"+entry.getValue());
        }

Collections.toMap(k,v)

 

标签:常用,java,Stream,stream,list,System,add,println
From: https://www.cnblogs.com/lccsdncnblogs/p/17099712.html

相关文章

  • java 二维数组
      一个[代表是一维数组,I代表是int型,@后面跟的是地址; ......
  • 10.5最常用的mov指令
    指令中最常使用的是对寄存器和内存进行数据存储的mov指令mov指令的两个操作数,分别用来指定数据的存储地和读出源。操作数中可以指定寄存器、常数、标签(附加在地址前),......
  • [转]java dd-m 月 - yy 日期转换成 yyyy-MM-dd
    原文地址:javadd-m月-yy日期转换成yyyy-MM-dd-qlc的个人空间-OSCHINA-中文开源技术交流社区SimpleDateFormatsf=newSimpleDateFormat("dd-MM月-yy",Local......
  • Linux常用命令-文件相关(学习笔记一)
    学习整理文件和文件夹常用的命令,记录常规用法,便于查找,详细的命令用法后续研究创建文件夹mkdirfolderName重命名文件夹mv是移动文件和文件夹,可以将文件夹移动......
  • javaWeb01-使用idea快速搭建web项目
    本文主要讲述如何使用idea【这里的idea是2021年的】快速搭建web项目【没有使用maven创库】第一步:new->project第二步:选择java空项目第三步:选择路径以及......
  • Apache pdfbox java.io.IOException: The TrueType font null does not contain a 'cm
    尝试使用Apachepdfbox添加中文到pdf中,发现出现TheTrueTypefontnulldoesnotcontaina'cmap'table,主要原因是遍历pdf页数时调用PDDocument#save导致清空fontsToSu......
  • java中Map判断是否为空之isEmpty()与==null的区别
    isEmpty()方法判断Map是否有内容(即new分配空间后是否put键值对),若没有内容则true,否则false==null是判断map是否为null(即是否new分配空间,和其中的键值对没关系),若没有内容......
  • Redis在java中的使用
    1.添加价包<!--Redis依赖--><dependency><groupId>org.springframework.data</groupId><artifactId>spring-data-redis</artifactId><version>......
  • java控制结构1之if else和嵌套分支
    1.程序流程控制介绍在程序中,程序运行的流程控制决定程序是如何执行的,是我们必须掌握的,主要有三大流程控制语句。1)顺序控制2)分支控制3)循环控制2.顺序结构2.1不做......
  • JDK8 Stream的使用
    借助Lambda表达式,可以简化集合类的操作。一、List 二、Set三、Map四、Array ......