当前位置: 首页 > news >正文

java8 List的Stream流操作 (实用篇 三)

目录

java8 List的Stream流操作 (实用篇 三)

初始数据

1、Stream过滤:

过滤-常用方法

1.1 筛选单元素--年龄等于18

1.2 筛选单元素--年龄大于18

1.3 筛选范围--年龄大于18 and 年龄小于40

1.4 多条件筛选--年龄大于18 or 年龄小于40 and sex==男

1.5 多条件筛选--年龄大于18 or 年龄小于40 and sex==男 返回姓名(name)集合

2、Stream去重(集合去重和按元素去重)

去重-常用方法(关键字distinct、concat和利用set、map)

2.1 关键字distinct去重

2.2 关键字concat合并和distinct 去重

2.3 用set集合去重

2.4 用map去重--以某个元素去重

3、Stream拼接(joining)

拼接-常用方法

3.1 集合内某个字段拼接

3.2 对象内的指定元素map拼接、返回集合

3.3 对象内的指定元素map拼接、再全部拼接

4、Stream分组即组装成map(groupingBy、toMap)

分组-常用方法

4.1 groupingBy-通过年龄分组

4.2 根据userId组装list对象,对应id的对象的某个属性成组(这里用的userName)

4.3 toMap-通过userId分组(key重复会报错)

4.4 toMap-通过age分组、取前面的值

4.5 toMap-通过age分组、取后面的值

4.6 toMap-通过男女分组、并且累加age

5、Stream排序:

排序-常用方法

5.1 compareTo 关键字

5.2 Comparator.comparing() 关键方法

5.2.1 排序通常和过滤一起使用、如果元素为空会报错

5.2.2 多个元素排序方法

5.3 自定义排序

6、Stream统计(count、sum、max、min、average)

统计-常用方法

6.1 count-获取user集合中年龄大于18岁的人数

6.2 sum-获取user集合中所有人的年纪的总和

6.3 max-获取user集合中所有人年纪最大的人

6.4 min-获取user集合中所有人年纪最小的人

6.5 average-获取user集合中所有人的年纪的平均值

7、Stream分页(skip、limit)

分页-常用方法

7.1 skip:跳过前n个数据 、limit:获取前n个数据


java8 List的Stream流操作 (实用篇 三)

实际开发的时候想不起来Stream的一些常用方法、去找却很不方便、所以我准备再学一篇实用或者叫常用的stream相关方法的文章。学习整理也是方便查看

结合 java8 List的Stream流操作 (常用篇 一)_java list.stream-CSDN博客

java8 List的Stream流操作 (特别篇 二) toMap_java list tomap-CSDN博客

和实际开发中的需求、按开发使用率排

初始数据

        List<User> userList = Lists.newArrayList();userList.add(new User(1,"天一","男",16,true));userList.add(new User(2,"空二","女",19,true));userList.add(new User(3,"张三","男",18,true));userList.add(new User(4,"李四","女",38,true));userList.add(new User(5,"王五","男",18,true));userList.add(new User(6,"王六","男",18,true));userList.add(new User(7,"王七","男",18,true));userList.add(new User(7,"王七","男",18,true));userList.add(new User(8,"王七","男",null,true));

1、Stream过滤:

过滤是我们基本必用的 不管是过滤null值还是按条件过滤都是最常用的。

过滤-常用方法

1.1 筛选单元素--年龄等于18
//筛选单元素--年龄等于18
List<User> filterAgeEqual = userList.stream().filter(user -> user.getAge() == 18).collect(Collectors.toList());
1.2 筛选单元素--年龄大于18
//筛选单元素--年龄大于18
List<User> filterAgeRange = userList.stream().filter(user -> user.getAge() > 18).collect(Collectors.toList());
1.3 筛选范围--年龄大于18 and 年龄小于40
//筛选范围--年龄大于18 and 年龄小于40
List<User> filterAgeRange2 = userList.stream().filter(user -> user.getAge() > 18 && user.getAge() < 40).collect(Collectors.toList());
1.4 多条件筛选--年龄大于18 or 年龄小于40 and sex==男
//多条件筛选--年龄大于18 or 年龄小于40 and sex==男
List<User> filterAgeRange3 = userList.stream().filter(user -> user.getAge() > 18 || user.getAge() < 40 && "男".equals(user.getSex())).collect(Collectors.toList());
1.5 多条件筛选--年龄大于18 or 年龄小于40 and sex==男 返回姓名(name)集合
//多条件筛选--年龄大于18 or 年龄小于40 and sex==男  返回姓名(name)集合
List<String> nameList = userList.stream().filter(user -> (user.getAge() > 18 || user.getAge() < 40) && "男".equals(user.getSex())).map(User::getUserName).collect(Collectors.toList());

2、Stream去重(集合去重和按元素去重)

去重-常用方法(关键字distinct、concat和利用set、map)

2.1 关键字distinct去重

集合内的对象去重--结果是有序的

List<User> distinctList = userList.stream().distinct().collect(Collectors.toList());
2.2 关键字concat合并和distinct 去重

concat:合并两个流 distinct:去重

//concat:合并两个流 distinct:去重
List<User> concatAnddistinctList = Stream.concat(userList.stream(), userList.stream()).distinct().collect(Collectors.toList());
2.3 用set集合去重

集合内的对象去重--结果乱序

//集合内的对象去重--结果乱序
Set<User> setDistinct = userList.stream().collect(Collectors.toSet());
2.4 用map去重--以某个元素去重

以某个元素去重--用map集合 (v1, v2) -> v1 使用v1是表示保留age(年龄)第一次出现的对象、如果使用v2是保留age(年龄)最后一次出现的对象

List<User> mapDistinct = userList.stream().collect(Collectors.collectingAndThen(Collectors.toMap(User::getAge, Function.identity(), (v1, v2) -> v1),map -> new ArrayList<>(map.values())));

3、Stream拼接(joining)

拼接-常用方法

3.1 集合内某个字段拼接

姓名以,拼接

//姓名以,拼接
String userNameList = userList.stream().map(User::getUserName).collect(Collectors.joining(","));
3.2 对象内的指定元素map拼接、返回集合

每个对象都以 userId-userName-age 拼接、然后返回String集合

//每个对象都以 userId-userName-age 拼接、然后返回String集合
List<String> strList = userList.stream().map((User user) -> user.getUserId() + "-" + user.getUserName() + "-" + user.getAge()).collect(Collectors.toList());
3.3 对象内的指定元素map拼接、再全部拼接

每个对象都以 userId-userName-age 拼接、再以 , 拼接返回字符串

//每个对象都以 userId-userName-age 拼接、再以 , 拼接返回字符串
String userIdAndAgeNameAndList = userList.stream().map((User user) -> user.getUserId() + "-" + user.getUserName() + "-" + user.getAge()).collect(Collectors.joining(","));

4、Stream分组即组装成map(groupingBy、toMap)

分组-常用方法

4.1 groupingBy-通过年龄分组
//groupingBy-通过年龄分组
Map<Integer, List<User>> userGroupingByMap = userList.stream().collect(Collectors.groupingBy(User::getAge));userGroupingByMap.forEach((k, v) -> {System.out.println(k + ":" + v);});
4.2 根据userId组装list对象,对应id的对象的某个属性成组(这里用的userName)
//根据userId组装list对象,对应id的对象的某个属性成组(这里用的userName)
Map<Integer,List<String>> mp6 = userList.stream().collect(Collectors.groupingBy(User::getUserId, Collectors.mapping(User::getUserName, Collectors.toList())));
4.3 toMap-通过userId分组(key重复会报错)
//toMap-通过userId分组(key重复会报错)
Map<Integer, User> userToMap = userList.stream().filter(user -> user.getAge() != null).collect(Collectors.toMap(User::getUserId, Function.identity()));
4.4 toMap-通过age分组、取前面的值
//toMap-通过age分组、取前面的值
Map<Integer, User> userToMap2 = userList.stream().filter(user -> user.getAge() != null).collect(Collectors.toMap(User::getAge, Function.identity(), (v1, v2) -> v1));
4.5 toMap-通过age分组、取后面的值
//toMap-通过age分组、取后面的值
Map<Integer, User> userToMap3 = userList.stream().filter(user -> user.getAge() != null).collect(Collectors.toMap(User::getAge, Function.identity(), (v1, v2) -> v2));
4.6 toMap-通过男女分组、并且累加age
//toMap-通过男女分组、并且累加age
Map<String, Integer> userToMap4 = userList.stream().filter(user -> user.getAge() != null).collect(Collectors.toMap(User::getSex, User::getAge, (v1, v2) -> v1 + v2));
userToMap4.forEach((k, v) -> {System.out.println(k + ":" + v);
});

5、Stream排序:

开发中有很多都是组装的集合、而要求返回的集合是有序的 (使用率不高的原因是数据库查询支持排序)、

排序-常用方法

单元素排序方法

5.1 compareTo 关键字

(o1, o2) -> o1.getUserId().compareTo(o2.getUserId()) 升序 (o1, o2) -> o2.getUserId().compareTo(o1.getUserId()) 降序

通过指定的userId字段排序

//升序 只写sorted()默认是升序、 我是为了演示才写完整的、开发中可以直接写sorted()
List<User> sortedCompareTo = userList.stream().sorted((o1, o2) -> o1.getUserId().compareTo(o2.getUserId())).collect(Collectors.toList());//降序
List<User> sortedReversed= userList.stream().sorted((o1, o2) -> o2.getUserId().compareTo(o1.getUserId())).collect(Collectors.toList());
5.2 Comparator.comparing() 关键方法

默认升序 加reversed()为降序

//默认升序
List<User> sortedComparator = userList.stream().sorted(Comparator.comparing(User::getUserId)).collect(Collectors.toList());//reversed()为降序
List<User> sortedComparatorReversed = userList.stream().sorted(Comparator.comparing(User::getUserId).reversed()).collect(Collectors.toList());
5.2.1 排序通常和过滤一起使用、如果元素为空会报错
//排序通常和过滤一起使用、如果元素为空会报错
List<User> sortedFilter = userList.stream().filter(user -> user.getAge() != null).sorted(Comparator.comparing(User::getAge)).collect(Collectors.toList());
5.2.2 多个元素排序方法

排序通常和过滤一起使用、 先用age排序、年龄相同再用userId排序(默认是升序)

//排序通常和过滤一起使用、 先用age排序、年龄相同再用userId排序(默认是升序)
Stream<User> sortedComparators = userList.stream().filter(user -> user.getAge() != null).sorted(Comparator.comparing(User::getAge).thenComparing(User::getUserId));

排序通常和过滤一起使用、 先用age排序升序、年龄相同再用userId排序降序

//排序通常和过滤一起使用、 先用age排序升序、年龄相同再用userId排序降序
Stream<User> sortedComparatorReverseds = userList.stream().filter(user -> user.getAge()!=null).sorted(Comparator.comparing(User::getAge).thenComparing(User::getUserId).reversed());
5.3 自定义排序

先按年龄再按userId自定义排序(降序)

//先按年龄再按userId自定义排序(降序)
List<User> sortedCustom = userList.stream().sorted((u1, u2) -> {if (Objects.equals(u1.getAge(), u2.getAge())) {return u2.getAge() - u1.getAge();} else {return u2.getUserId() - u1.getUserId();}
}).collect(Collectors.toList());

6、Stream统计(count、sum、max、min、average)

统计-常用方法

6.1 count-获取user集合中年龄大于18岁的人数
//count-获取user集合中年龄大于18岁的人数
Long count = userList.stream().filter(user->user.getAge() > 18).count();
System.out.println("user集合中年龄大于18岁的人数:"+count);
6.2 sum-获取user集合中所有人的年纪的总和
//sum-获取user集合中所有人的年纪的总和
Long summingLong = userList.stream().map(User::getAge).collect(Collectors.summingLong(Integer::longValue));
System.out.println("user集合中所有人的年纪的总和:"+summingLong);
6.3 max-获取user集合中所有人年纪最大的人
//max-获取user集合中所有人年纪最大的人
Optional<User> max = userList.stream().max(Comparator.comparing(User::getAge));
System.out.println("user集合中年纪最大的人是:"+max.get().getUserName());
6.4 min-获取user集合中所有人年纪最小的人
//min-获取user集合中所有人年纪最小的人
Optional<User> min = userList.stream().min(Comparator.comparing(User::getAge));
System.out.println("user集合中年纪最小的人是:"+min.get().getUserName());
6.5 average-获取user集合中所有人的年纪的平均值
//average-获取user集合中所有人的年纪的平均值
Double average = userList.stream().map(User::getAge).collect(Collectors.averagingDouble(Integer::doubleValue));
System.out.println("user集合中所有人的年纪的平均值:"+ average);

7、Stream分页(skip、limit)

分页-常用方法

7.1 skip:跳过前n个数据 、limit:获取前n个数据
//skip:跳过前n个数据 、limit:获取前n个数据
List<User> skipAndLimit = userList.stream().skip(1).limit(2).collect(Collectors.toList());
if(!CollectionUtils.isEmpty(skipAndLimit)){skipAndLimit.forEach(System.out::println);
}

相关文章:

java8 List的Stream流操作 (实用篇 三)

目录 java8 List的Stream流操作 (实用篇 三) 初始数据 1、Stream过滤&#xff1a; 过滤-常用方法 1.1 筛选单元素--年龄等于18 1.2 筛选单元素--年龄大于18 1.3 筛选范围--年龄大于18 and 年龄小于40 1.4 多条件筛选--年龄大于18 or 年龄小于40 and sex男 1.5 多条件筛…...

机器学习python实践——数据“相关性“的一些补充性个人思考

在上一篇“数据白化”的文章中&#xff0c;说到了数据“相关性”的概念&#xff0c;但是在统计学中&#xff0c;不仅存在“相关性”还存在“独立性”等等&#xff0c;所以&#xff0c;本文主要对数据“相关性”进行一些补充。当然&#xff0c;如果这篇文章还能入得了各位“看官…...

MySQL——触发器(trigger)基本结构

1、修改分隔符符号 delimiter $$ $$可以修改 2、创建触发器函数名称 create trigger 函数名 3、什么样在操作触发&#xff0c;操作哪个表 after &#xff1a;……之后触发 before &#xff1a;……之后触发 insert &#xff1a;……之后触发 update &#xff1a;……之后触…...

数字孪生定义及应用介绍

数字孪生定义及应用介绍 1 数字孪生&#xff08;Digital Twin, DT&#xff09;概述1.1 定义1.2 功能1.3 使用场景1.4 数字孪生三步走1.4.1 数字模型1.4.2 数字影子1.4.3 数字孪生 数字孪生地球平台Earth-2 参考 1 数字孪生&#xff08;Digital Twin, DT&#xff09;概述 数字孪…...

数据赋能(122)——体系:数据清洗——技术方法、主要工具

技术方法 数据清洗标准模型是将数据输入到数据清洗处理器&#xff0c;通过一系列步骤“清理”数据&#xff0c;然后以期望的格式输出清理过的数据。数据清洗从数据的准确性、完整性、一致性、惟一性、适时性、有效性几个方面来处理数据的丢失值、越界值、不一致代码、重复数据…...

【SCAU数据挖掘】数据挖掘期末总复习题库简答题及解析——中

1. 某学校对入学的新生进行性格问卷调查(没有心理学家的参与)&#xff0c;根据学生对问题的回答&#xff0c;把学生的性格分成了8个类别。请说明该数据挖掘任务是属于分类任务还是聚类任务?为什么?并利用该例说明聚类分析和分类分析的异同点。 解答&#xff1a; (a)该数据…...

2024年注册安全工程师报名常见问题汇总!

​ 注册安全工程师报名 24年注册安全工程师报名已正式拉开序幕&#xff0c;报名时间为6月18日—7月10日&#xff0c;考试时间为10月26日—10月27日。 目前经有12个地区公布了2024年注册安全工程师报名时间&#xff1a; 注册安全工程师报名信息完善 根据注安报名系统提示&am…...

JRebel-JVMTI [FATAL] Couldn‘t write to C:\Users\中文用户名-完美解决

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 热部署下载参考博客解决第一步第二步第三步&#xff1a;第四步&#xff1a; 热部署下载 下载后启动报错&#xff1a;JRebel-JVMTI [FATAL] Couldn’t write to C:\…...

STM32基于DMA数据转运和AD多通道

文章目录 1. DMA数据转运 1.1 初始化DMA步骤 1.2 DMA的库函数 1.3 设置当前数据寄存器 1.4 DMA获取当前数据寄存器 2. DMA数据转运 2.1 DMA.C 2.2 DMA.H 2.3 MAIN.C 3. DMAAD多通道 3.1 AD.C 3.2 AD.H 3.3 MAIN.C 1. DMA数据转运 对于DMA的详细解析可以看下面这篇…...

安卓应用开发——Android Studio中通过id进行约束布局

在Android开发中&#xff0c;布局通常使用XML文件来描述&#xff0c;而约束&#xff08;如相对位置、大小等&#xff09;可以通过多种方式实现&#xff0c;但直接使用ID进行约束并不直接对应于Android的传统布局系统&#xff08;如LinearLayout、RelativeLayout等&#xff09;。…...

Elasticsearch过滤器(filter):原理及使用

Hi~&#xff01;这里是奋斗的小羊&#xff0c;很荣幸您能阅读我的文章&#xff0c;诚请评论指点&#xff0c;欢迎欢迎 ~~ &#x1f4a5;&#x1f4a5;个人主页&#xff1a;奋斗的小羊 &#x1f4a5;&#x1f4a5;所属专栏&#xff1a;C语言 &#x1f680;本系列文章为个人学习…...

Docker配置与使用详解

一、引言 随着云计算和微服务的兴起&#xff0c;Docker作为一种轻量级的容器化技术&#xff0c;越来越受到开发者和运维人员的青睐。Docker通过容器化的方式&#xff0c;将应用程序及其依赖项打包成一个可移植的镜像&#xff0c;从而实现了应用程序的快速部署和扩展。本文将详…...

触控MCU芯片(1):英飞凌PSoC第6代第7代

前言: 说到触摸MCU芯片,这个历史也是很久了,比如日常经常接触到的洗衣机、电冰箱、小家电,隔着一层玻璃,轻轻一按就能识别按键,感觉比过去纯机械式的按键更高级更美观,不仅白电,现在很多汽车也都在进行触摸按键的改版,不再使用笨重的机械按键,比如空调调温按键、档位…...

git pull报错:unable to pull from remote repository due to conflicting tag(s)

背景 我在vscode里正常拉取代码&#xff0c;突然就报了如题所示的错误。 原因 因为vscode的拉取按钮执行的实际命令是&#xff1a;git pull --tags origin branch-name&#xff0c;该命令的实际含义是从远程仓库拉取指定的分支和该远程仓库上的所有标签。 在拉取标签时本地的…...

Python将字符串用特定字符分割并前面加序号

Python将字符串用特定字符分割并前面加序号 Python将字符串用特定字符分割并前面加序号&#xff0c;今天项目中就遇到&#xff0c;看着不难&#xff0c;得花点时间搞出来急用啊&#xff0c;在网上找了一圈&#xff0c;没发现有完整流程的文章。所以就搞出来并写了这个文章。仅…...

【第16章】Vue实战篇之跨域解决

文章目录 前言一、浏览器跨域二、配置代理1.公共请求2.代理配置 总结 前言 前后端项目分离衍生出浏览器跨域问题&#xff0c;开发之前我们通过配置代理解决这个问题。 一、浏览器跨域 浏览器的跨域问题主要是由于浏览器的同源策略导致的。同源策略是浏览器的一个安全功能&…...

【PB案例学习笔记】-22制作一个语音朗读金额小应用

写在前面 这是PB案例学习笔记系列文章的第22篇&#xff0c;该系列文章适合具有一定PB基础的读者。 通过一个个由浅入深的编程实战案例学习&#xff0c;提高编程技巧&#xff0c;以保证小伙伴们能应付公司的各种开发需求。 文章中设计到的源码&#xff0c;小凡都上传到了gite…...

glmark2代码阅读总结

glmark2代码阅读总结 一、总体 用输入参数生成testbench项用scene和benchmark管理进行复用通过类的重载&#xff0c;创建出不同的分支和具体的实现点&#xff0c;如scene和mainloop类用例执行又规划&#xff0c;每个scene都统一有setup&#xff0c;等使用scene的继承关系&…...

第 6 章 监控系统 | 监控套路 - 总结

前面,我们使用 Prometheus + Grafana + Node Exporter 实现虚拟机监控及告警。 那么,😇 监控的套路究竟是什么呢? 第 1 步:暴露 metrics,通过某个 exporter 将 metrics 暴露出来第 2 步:配置 Prometheus 抓取上面暴露的 metrics 数据第 3 步:加速 metrics 显示,配置…...

VsCode中C文件调用其他C文件函数失败

之前一直使用CodeBlocks&#xff0c;最近使用vscode多&#xff0c;感觉它比较方便&#xff0c;但在调用其他C文件的时候发现报错以下内容基于单C文件运行成功&#xff0c;否则请移步 博文&#xff1a;VSCode上搭建C/C开发环境 报错信息 没有使用CodeRunner插件&#xff0c;弹…...

装饰模式(Decorator Pattern)重构java邮件发奖系统实战

前言 现在我们有个如下的需求&#xff0c;设计一个邮件发奖的小系统&#xff0c; 需求 1.数据验证 → 2. 敏感信息加密 → 3. 日志记录 → 4. 实际发送邮件 装饰器模式&#xff08;Decorator Pattern&#xff09;允许向一个现有的对象添加新的功能&#xff0c;同时又不改变其…...

【JavaEE】-- HTTP

1. HTTP是什么&#xff1f; HTTP&#xff08;全称为"超文本传输协议"&#xff09;是一种应用非常广泛的应用层协议&#xff0c;HTTP是基于TCP协议的一种应用层协议。 应用层协议&#xff1a;是计算机网络协议栈中最高层的协议&#xff0c;它定义了运行在不同主机上…...

在鸿蒙HarmonyOS 5中实现抖音风格的点赞功能

下面我将详细介绍如何使用HarmonyOS SDK在HarmonyOS 5中实现类似抖音的点赞功能&#xff0c;包括动画效果、数据同步和交互优化。 1. 基础点赞功能实现 1.1 创建数据模型 // VideoModel.ets export class VideoModel {id: string "";title: string ""…...

HTML 列表、表格、表单

1 列表标签 作用&#xff1a;布局内容排列整齐的区域 列表分类&#xff1a;无序列表、有序列表、定义列表。 例如&#xff1a; 1.1 无序列表 标签&#xff1a;ul 嵌套 li&#xff0c;ul是无序列表&#xff0c;li是列表条目。 注意事项&#xff1a; ul 标签里面只能包裹 li…...

爬虫基础学习day2

# 爬虫设计领域 工商&#xff1a;企查查、天眼查短视频&#xff1a;抖音、快手、西瓜 ---> 飞瓜电商&#xff1a;京东、淘宝、聚美优品、亚马逊 ---> 分析店铺经营决策标题、排名航空&#xff1a;抓取所有航空公司价格 ---> 去哪儿自媒体&#xff1a;采集自媒体数据进…...

【学习笔记】深入理解Java虚拟机学习笔记——第4章 虚拟机性能监控,故障处理工具

第2章 虚拟机性能监控&#xff0c;故障处理工具 4.1 概述 略 4.2 基础故障处理工具 4.2.1 jps:虚拟机进程状况工具 命令&#xff1a;jps [options] [hostid] 功能&#xff1a;本地虚拟机进程显示进程ID&#xff08;与ps相同&#xff09;&#xff0c;可同时显示主类&#x…...

VM虚拟机网络配置(ubuntu24桥接模式):配置静态IP

编辑-虚拟网络编辑器-更改设置 选择桥接模式&#xff0c;然后找到相应的网卡&#xff08;可以查看自己本机的网络连接&#xff09; windows连接的网络点击查看属性 编辑虚拟机设置更改网络配置&#xff0c;选择刚才配置的桥接模式 静态ip设置&#xff1a; 我用的ubuntu24桌…...

无人机侦测与反制技术的进展与应用

国家电网无人机侦测与反制技术的进展与应用 引言 随着无人机&#xff08;无人驾驶飞行器&#xff0c;UAV&#xff09;技术的快速发展&#xff0c;其在商业、娱乐和军事领域的广泛应用带来了新的安全挑战。特别是对于关键基础设施如电力系统&#xff0c;无人机的“黑飞”&…...

[免费]微信小程序问卷调查系统(SpringBoot后端+Vue管理端)【论文+源码+SQL脚本】

大家好&#xff0c;我是java1234_小锋老师&#xff0c;看到一个不错的微信小程序问卷调查系统(SpringBoot后端Vue管理端)【论文源码SQL脚本】&#xff0c;分享下哈。 项目视频演示 【免费】微信小程序问卷调查系统(SpringBoot后端Vue管理端) Java毕业设计_哔哩哔哩_bilibili 项…...

在Mathematica中实现Newton-Raphson迭代的收敛时间算法(一般三次多项式)

考察一般的三次多项式&#xff0c;以r为参数&#xff1a; p[z_, r_] : z^3 (r - 1) z - r; roots[r_] : z /. Solve[p[z, r] 0, z]&#xff1b; 此多项式的根为&#xff1a; 尽管看起来这个多项式是特殊的&#xff0c;其实一般的三次多项式都是可以通过线性变换化为这个形式…...