JAVA题目笔记(二十)Stream流综合练习+方法引用

一、数据过滤

import java.util.*;
import java.util.stream.Collectors;public class Co {public static void main(String[] args) {List<Integer> list=new ArrayList<>();Collections.addAll(list,1,2,3,4,5,6,7,8,9,10);List<Integer> newlist = list.stream().filter(s -> s % 2 == 0).collect(Collectors.toList());newlist.forEach(s-> System.out.println(s));//2//4//6//8//10}
}

二、数据操作

数据操作(一)

import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors;public class Co {public static void main(String[] args) {ArrayList<String> list=new ArrayList<>();Collections.addAll(list,"zhangsan,23","lisi,24","wangwu,25");Map<String, Integer> map = list.stream().filter(s -> Integer.parseInt(s.split(",")[1]) >= 24).collect(Collectors.toMap(new Function<String, String>() {@Overridepublic String apply(String s) {return s.split(",")[0];}}, new Function<String, Integer>() {@Overridepublic Integer apply(String s) {return Integer.parseInt(s.split(",")[1]);}}));//lambda简化Map<String, Integer> map1 = list.stream().filter(s -> Integer.parseInt(s.split(",")[1]) >= 24).collect(Collectors.toMap(s->s.split(",")[0],s->Integer.parseInt(s.split(",")[1])));System.out.println(map); //{lisi=24, wangwu=25}System.out.println(map1); //{lisi=24, wangwu=25}}
}

数据操作(二)

import java.util.*;
import java.util.function.Function;
import java.util.function.Predicate;
import java.util.stream.Collectors;
import java.util.stream.Stream;public class Co {public static void main(String[] args) {//创建男演员对象Actor actor1=new Actor("张三二",23);Actor actor2=new Actor("李四",24);Actor actor3=new Actor("王五",25);Actor actor4=new Actor("成三",28);Actor actor5=new Actor("李大壮",29);Actor actor6=new Actor("王狗圣",33);//创建演员对象Actor actor7=new Actor("杨花",23);Actor actor8=new Actor("杨乐",24);Actor actor9=new Actor("王华",25);Actor actor10=new Actor("小妹",28);Actor actor11=new Actor("杨女家",29);Actor actor12=new Actor("杨花花",33);ArrayList<Actor> listNAN=new ArrayList<>();ArrayList<Actor> listNV=new ArrayList<>();Collections.addAll(listNAN,actor1,actor2,actor3,actor4,actor5,actor6);Collections.addAll(listNV,actor7,actor8,actor9,actor10,actor11,actor12);//男演员只要名字三个字的前两人listNAN.stream().filter(new Predicate<Actor>() {@Overridepublic boolean test(Actor actor) {return actor.getName().length() == 3;}}).limit(2);//女演员只要姓杨的且不要第一个listNV.stream().filter(new Predicate<Actor>() {@Overridepublic boolean test(Actor actor) {return "杨".equals(actor.getName().substring(0,1));}}).skip(1);//合并两个流存入List集合中    用lambda简化List<Actor> resultlist = Stream.concat(listNAN.stream().filter(s -> s.getName().length() == 3).limit(2),listNV.stream().filter(s -> "杨".equals(s.getName().substring(0, 1))).skip(1)).collect(Collectors.toList());for (Actor s : resultlist) {System.out.println(s);}//Actor{name = 张三二, age = 23}//Actor{name = 李大壮, age = 29}//Actor{name = 杨乐, age = 24}//Actor{name = 杨女家, age = 29}//Actor{name = 杨花花, age = 33}}
}

三、方法引用

练习一:

import java.util.*;public class Co {public static void main(String[] args) {//引用构造方法 类名::new//引用指定类型数组构造方法   数据类型[]::newArrayList<String> list=new ArrayList<>();Collections.addAll(list,"张三,23","李四,18","王五,39","陈六,34");Actor[] arr = list.stream().map(Actor::new).toArray(Actor[]::new);System.out.println(Arrays.toString(arr));//[Actor{name = 张三, age = 23}, Actor{name = 李四, age = 18},// Actor{name = 王五, age = 39}, Actor{name = 陈六, age = 34}]}
}
        public Actor() {}//引用构造方法 所需要增加的新构造方法public Actor(String s) {this.name=s.split(",")[0];this.age=Integer.parseInt(s.split(",")[1]);}public Actor(String name, int age) {this.name = name;this.age = age;}

练习二:

import java.util.*;
import java.util.function.Function;public class Co {public static void main(String[] args) {Actor actor1=new Actor("张三",20);Actor actor2=new Actor("王五",10);Actor actor3=new Actor("李四",40);Actor actor4=new Actor("陈六",22);ArrayList<Actor> list=new ArrayList<>();Collections.addAll(list,actor1,actor2,actor3,actor4);//使用类名引用成员方法//独有规则://1、需要有函数式接口//2、被引用方法必须已经存在//3、被引用方法的形参需要跟抽象方法的第二个形参到最后一个形参保持一致,返回值需保持一致//4、被引用方法的功能需要满足当前需求//抽象方法形参的详解://第一个参数:表示被引用方法的调用者,决定了可以引用哪些类中的方法,在Stream流中,第一个参数一般表示流中每一个数据,假设流中数据为String类型,那么使用这种方法进行方法引用,只能引用String类中的方法。//第二个参数到最后一个参数:跟被引用方法的形参保持一致,如果没有第二个参数,说明被引用的方法需要是无参的成员方法。String[] arr = list.stream().map(Actor::getName).toArray(String[]::new);System.out.println(Arrays.toString(arr)); //[张三, 王五, 李四, 陈六]}
}

练习三:

import java.util.*;public class Co {public static void main(String[] args) {Actor actor1=new Actor("张三",20);Actor actor2=new Actor("王五",10);Actor actor3=new Actor("李四",40);Actor actor4=new Actor("陈六",22);ArrayList<Actor> list=new ArrayList<>();Collections.addAll(list,actor1,actor2,actor3,actor4);//使用类名引用成员方法String[] arr = list.stream().map(Actor::toString).toArray(String[]::new);System.out.println(Arrays.toString(arr));//[张三-20, 王五-10, 李四-40, 陈六-22]}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/479100.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机操作系统——进程控制(Linux)

进程控制 进程创建fork&#xff08;&#xff09;函数fork() 的基本功能fork() 的基本语法fork() 的工作原理fork() 的典型使用示例fork() 的常见问题fork() 和 exec() 结合使用总结 进程终止与$进程终止的本质进程终止的情况正常退出&#xff08;Exit&#xff09;由于信号终止非…

摄像头原始数据读取——V4L2(mmap模式,V4L2_MEMORY_MMAP)

摄像头原始数据读取——V4L2(mmap模式,V4L2_MEMORY_MMAP) 内存映射模式&#xff0c;是将设备在内核态申请的用于存储视频数据的物理内存映射到用户空间&#xff0c;使得用户应用程序可以直接访问和操作设备数据物理内存&#xff0c;避免了数据的拷贝。因此采集速度较快&#x…

零地址挂页

零地址 如果我们有比较好的C编程基础&#xff0c;我们就会知道&#xff0c;我们在代码中定义了一个零地址或者空指针&#xff0c;那么它实际上会指向虚拟内存的零地址&#xff0c;多数操作系统&#xff0c;包括Win&#xff0c;在进程创建的时候&#xff0c;都会空出前64k的空间…

QT6学习第四天 感受QT的文件编译

QT6学习第四天 感受QT的文件编译 使用纯代码编写程序新建工程 使用其他编辑器纯代码编写程序并在命令行运行使用 .ui 表单文件生成界面使用自定义 C 窗口类使用现成的QT Designer界面类 使用纯代码编写程序 我们知道QT Creator中可以用拖拽的方式在 .ui 文件上布局&#xff0c…

windows安全中心,永久卸载工具分享

使用方法 2024Goby红队版工具分享&#xff0c;附2024年漏洞POC下载 下载链接&#xff1a; https://pan.quark.cn/s/4fc2712a2afc一路回车&#xff0c;选项Y即可 耐心等待几秒种&#xff0c;自动重启 此时打开windows安全中心&#xff0c;已经完全不能使用了&#xff0c;响应…

jvm核心组件介绍

1. 类加载器&#xff08;ClassLoader&#xff09;&#xff1a; • 想象它是一个快递员&#xff0c;负责把Java类&#xff08;.class文件&#xff09;这个“包裹”从磁盘这个“发货地”送到JVM内部这个“目的地”。类加载器确保每个类只被加载一次&#xff0c;并维护一个类的层级…

目标检测,图像分割,超分辨率重建

目标检测和图像分割 目标检测和图像分割是计算机视觉中的两个不同任务&#xff0c;它们的输出形式也有所不同。下面我将分别介绍这两个任务的输出。图像分割又可以分为&#xff1a;语义分割、实例分割、全景分割。 语义分割&#xff08;Semantic Segmentation&#xff09;&…

Python编程技巧:多变量赋值的优雅艺术

在Python编程的世界里&#xff0c;有许多令人惊叹的语法特性&#xff0c;而多变量赋值就像是一颗闪耀的明珠&#xff0c;它不仅让代码更优雅&#xff0c;还能提升程序的执行效率。今天我们就深入探讨这个看似简单却蕴含深意的编程技巧。 基础认识 传统的变量赋值方式&#xff…

CentOS 7 安装部署 KVM

1.关闭虚拟机 打开相关选项 打开虚拟机centos7 连接xshell 测试网络&#xff0c;现在就是没问题的&#xff0c;因为我们要使用网络源 安装 GNOME 桌面环境 安装KVM 模块 安装KVM 调试工具 构建虚拟机的命令行工具 qemu 组件,创建磁盘、启动虚拟机等 输入这条命令&#xff0c;…

微信小程序学习指南从入门到精通

&#x1f5fd;微信小程序学习指南从入门到精通&#x1f5fd; &#x1f51d;微信小程序学习指南从入门到精通&#x1f51d;✍前言✍&#x1f4bb;微信小程序学习指南前言&#x1f4bb;一、&#x1f680;文章列表&#x1f680;二、&#x1f52f;教程文章的好处&#x1f52f;1. ✅…

【C++】读取数量不定的输入数据

读取数量不定的输入数据 似乎是一个很实用的东西&#xff1f; 问题&#xff1a; 我们如何对用户输入的一组数&#xff08;事先不知道具体有多少个数&#xff09;求和&#xff1f; 这需要不断读取数据直至没有新的输入为止。&#xff08;所以我们的代码就是这样设计的&#x…

基于vite创建的react18项目的单元测试

题外话 最近一个小伙伴进了字节外包&#xff0c;第一个活就是让他写一个单元测试。 嗯&#xff0c;说实话&#xff0c;在今天之前我只知道一些理论&#xff0c;但是并没有实操过&#xff0c;于是我就试验了一下。 通过查询资料&#xff0c;大拿们基本都说基于vite的项目&…

如何用通义灵码助力项目开发 | OceanBase obdiag 项目共建实践

本文来自 obdiag 项目共建的用户分享 一、背景 我的数据库探索之旅始于OceanBase。作为一位满怀好奇心的DBA&#xff0c;我内心始终怀揣着对数据库内部运作机制的无尽向往。开源如同一把钥匙&#xff0c;为我们这些求知欲旺盛的“好奇猫”解锁了通往新知的神秘大门。在众多分布…

idea_卸载与安装

卸载与安装 卸载1、设置 -> 应用2、查找到应用&#xff0c;点击卸载3、把删除记录和设置都勾选上4、删除其它几个位置的残留 安装1、下载安装包2、欢迎安装 -> Next3、选择安装目录 -> Next4、创建快捷图标和添加到环境变量5、确认文件夹的名称 -> Install6、完成安…

day01

Hm-Footer.vue <template><div class"hm-footer">我是hm-footer</div></template><script>export default {}</script><style>.hm-footer{height:100px;line-height:100px;text-align:center;font-size:30px;background-…

NLP 1、人工智能与NLP简介

人人都不看好你&#xff0c;可偏偏你最争气 —— 24.11.26 一、AI和NLP的基本介绍 1.人工智能发展流程 弱人工智能 ——> 强人工智能 ——> 超人工智能 ① 弱人工智能 人工智能算法只能在限定领域解决特定的问题 eg&#xff1a;特定场景下的文本分类、垂直领域下的对…

基于混合ABC和A*算法复现

基于混合ABC和A*算法复现 一、背景介绍二、算法原理&#xff08;一&#xff09;A*算法原理&#xff08;二&#xff09;人工蜂群算法原理&#xff08;三&#xff09;混合ABC和A*算法策略 三、代码实现&#xff08;一&#xff09;数据准备&#xff08;二&#xff09;关键函数实现…

解决SpringBoot连接Websocket报:请求路径 404 No static resource websocket.

问题发现 最近在工作中用到了WebSocket进行前后端的消息通信&#xff0c;后端代码编写完后&#xff0c;测试一下是否连接成功&#xff0c;发现报No static resource websocket.&#xff0c;看这个错貌似将接口变成了静态资源来访问了&#xff0c;第一时间觉得是端点没有注册成…

VITE+VUE3+TS环境搭建

前言&#xff08;与搭建项目无关&#xff09;&#xff1a; 可以安装一个node管理工具&#xff0c;比如nvm&#xff0c;这样可以顺畅的切换vue2和vue3项目&#xff0c;以免出现项目跑不起来的窘境。我使用的nvm&#xff0c;当前node 22.11.0 目录 搭建项目 添加状态管理库&…

红外小目标检测

目录 背景概述算法原理演示效果核心逻辑 使用方式基础镜像配置环境直接运行 参考文献 文章声明&#xff0c;非广告&#xff0c;仅个人体验。 背景 红外图像在许多领域中都有所应用。例如军事领域中&#xff0c;经常需要通过红外成像设备对远距离的目标进行侦察和监视&#xff…