首页 > 编程语言 >Java进阶学习笔记56——Stream

Java进阶学习笔记56——Stream

时间:2024-10-28 21:17:24浏览次数:7  
标签:Stream Java 进阶 stream map util names import

Stream流的初体验:

package cn.chang.d8_stream;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;

public class StreamTest1 {
    public static void main(String[] args) {
        List<String> names = new ArrayList<String>();
        Collections.addAll(names, "张三丰", "张无忌", "周芷若", "赵敏", "张强");
        System.out.println(names);

        // 找出姓张,且是3个字的名字,存入到一个新的集合中去
//        List<String> list = new ArrayList<>();
//        for (String name : names) {
//            if(name.startsWith("张") && name.length() == 3) {
//                list.add(name);
//            }
//        }
//        System.out.println(list);

        // 开始使用Stream流来解决这个需求:
        List<String> list2 = names.stream().filter(s -> s.startsWith("张")).filter(a -> a.length() == 3).collect(Collectors.toList());
        System.out.println(list2);
    }
}

运行结果:

Stream流的使用步骤:

Stream流的常用方法:

 获取Stream流:

获取集合的Stream流:

代码:

package cn.chang.d8_stream;

import java.util.*;
import java.util.stream.Stream;

public class StreamTest2 {
    public static void main(String[] args) {
        // 1. 如何获取List集合的Stream流?
        List<String> names = new ArrayList<String>();
        Collections.addAll(names, "张三丰", "张无忌", "周芷若", "赵敏", "张强");

        Stream<String> stream = names.stream();

        // 2. 如何获取Set集合的Stream流?
        Set<String> set = new HashSet<String>();
        Collections.addAll(set, "刘德华", "张曼玉", "蜘蛛精", "马德", "德玛西亚");

        Stream<String> stream2 = set.stream();
        stream2.filter(s -> s.contains("德")).forEach(s -> System.out.println(s));

        // 3. 如何获取Map集合的Stream流?
        Map<String, Double> map = new HashMap<>();
        map.put("古力娜扎", 172.3);
        map.put("迪丽热巴", 168.3);
        map.put("马尔扎哈", 166.3);
        map.put("卡尔扎巴", 168.3);

//        map.Stream();
        Set<String> keys = map.keySet();
        Stream<String> ks = keys.stream();

        Collection<Double> values = map.values();
        Stream<Double> vs = values.stream();

        Set<Map.Entry<String, Double>> entries = map.entrySet();
        Stream<Map.Entry<String, Double>> kvs = entries.stream();

        kvs.filter(e -> e.getKey().contains("巴")).forEach(e -> System.out.println(e.getKey() + "-->" + e.getValue()));

        // 4. 如何获取数组的Stream流?
        String[] names2 = {"张翠山", "东方不败", "唐大山", "独孤求败"};
        Stream<String> s1 = Arrays.stream(names2);
        Stream<String> s2 = Stream.of(names2);

        
    }
}

标签:Stream,Java,进阶,stream,map,util,names,import
From: https://blog.csdn.net/chang_chunhua/article/details/143269040

相关文章

  • JDBC: Java数据库连接的桥梁
    什么是JDBC?    Java数据库连接(JavaDatabaseConnectivity,简称JDBC)是Java提供的一种API,允许Java应用程序与各种数据库进行交互。JDBC提供了一组标准的接口,开发者可以利用这些接口执行QL语句、处理结果集以及管理数据库连接。通过JDBC,Java应用程序能够轻松地进行增删改查操......
  • 最新Java零基础知识(第二章标识符与关键字)
    2.1章节目标与知识框架2.1.1章节目标了解构成java源程序的标识符和关键字都是什么,掌握标识符的命名规则以及规范。能够识别标识符是否合法2.1.2知识框架2.2标识符概述(了解)标识符(identifier)是指用来标识某个实体的一个符号,在不同的应用环境下有不同的含义。......
  • javaweb基于SSH开发简单的新闻文章管理系统源码(前台+后台) 课程设计 大作业
    作品编号:1113数据库:mysql后端技术:SSH......
  • JAVA基础:万年历 【习题笔记】
    基础版publicstaticvoidmain(String[]args){System.out.println("请输入年份:");Scannerinput=newScanner(System.in);intyear=input.nextInt();System.out.println("请输入月份:");intmonth=input.nex......
  • JAVA基础:面向对象 (习题笔记)
    面向对象【初】1.猫要求:使用面向对象的思想,编写自定义类描述猫通过构造函数实现对所有属性赋值吃饭的方法通过接收输入参数,描述喜欢吃的食物玩耍的方法实现根据心情的好坏,表现不同的玩耍状态,信息中包含名字,品种,颜色  的属性内容 编写测试方法,通过构造函数实例......
  • 【JavaWeb】ELK介绍
    1.ELK简介ELK是三个开源软件的缩写,分别表示:Elasticsearch,Logstash,Kibana,它们都是开源软件。新增了一个FileBeat,它是一个轻量级的日志收集处理工具(Agent),Filebeat占用资源少,适合于在各个服务器上搜集日志后传输给Logstash,官方也推荐此工具。Elasticsearch是个开源分......
  • JavaSE——多线程2:线程池详解
    一、线程池介绍        线程池(ThreadPool)是一种基于多线程处理的服务器架构,它预先创建并维护一组线程,用于处理异步任务或并发请求。线程池的设计目的是减少创建和销毁线程的开销,提高系统的响应速度和吞吐量。(一)线程池的主要核心原理创建一个池子,池子中是空的。......
  • 【MySql进阶及常见方案】mysql索引底层原理和优化手段
    mysql索引底层原理和优化手段不管业务怎么发展,数据最终都要存储到数据库中,所以数据库是必不可少的一个环节。而随着业务逐渐壮大,并发越来越高,数据库很容易成为整个链路的短板。而调优的第一步,都是从sql语句、索引入手。先得保证单个数据库执行没问题,才会有更高层次的分库......
  • java+vue计算机毕设访客预约小程序【开题+程序+论文+源码】
    本系统(程序+源码)带文档lw万字以上文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着社会信息化程度的不断提升,企事业单位对访客管理的需求日益增强。传统的访客登记方式往往依赖纸质记录,不仅效率低下,还存在信息泄露和难以追溯的问......
  • java+vue计算机毕设二手物品交易系统的设计与实现【开题+程序+论文+源码】
    本系统(程序+源码)带文档lw万字以上文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景在当今社会,随着经济的飞速发展和人们生活水平的提高,消费观念逐渐从“物质至上”转向“绿色环保”和“可持续发展”。这一转变促使二手物品交易市场迅......