Java8使用Stream流实现List列表查询、统计、排序、分组、合并

Java8使用Stream流实现List列表查询、统计、排序以及分组

目录

  • 一、查询方法
    • 1.1 forEach
    • 1.2 filter(T -> boolean)
    • 1.3 filterAny() 和 filterFirst()
    • 1.4 map(T -> R) 和 flatMap(T -> Stream)
    • 1.5 distinct()
    • 1.6 limit(long n) 和 skip(long n)
  • 二、判断方法
    • 2.1 anyMatch(T -> boolean)
    • 2.2 allMatch(T -> boolean)
    • 2.3 noneMatch(T -> boolean)
  • 三、统计方法
    • 3.1 reduce((T, T) -> T) 和 reduce(T, (T, T) -> T)
    • 3.2 mapToInt(T -> int) 、mapToDouble(T -> double) 、mapToLong(T -> long)
    • 3.3 使用 counting() 或 count()
    • 3.4 summingInt() 、summingLong()、summingDouble()
    • 3.5 averagingInt() 、averagingLong()、averagingDouble()
    • 3.6 summarizingInt()、summarizingLong()、summarizingDouble()
    • 3.7 BigDecimal类型的统计
  • 四、排序方法
    • 4.1 sorted() / sorted((T,T) -> int)
  • 五、分组方法
    • 5.1 groupingBy
    • 5.2 多级分组
    • 5.3 分组汇总
  • 六、List的合并
    • 6.1 并集
    • 6.2 交集

List的 Stream流操作可以简化我们的代码,减少程序运行的压力,应对上面的问题,下面这篇文章主要给大家介绍了关于 Java8使用Stream流实现List列表查询、统计、排序以及分组的相关资料,需要的朋友可以参考下

Java8提供了Stream(流)处理集合的关键抽象概念,它可以对集合进行操作,可以执行非常复杂的查找、过滤和映射数据等操作。

Stream API 借助于同样新出现的Lambda表达式,极大的提高编程效率和程序可读性。

下面是使用Stream的常用方法的综合实例。

创建User类作为持久层

package com.example.demo.entity;import lombok.AllArgsConstructor;
import lombok.Data;
import java.math.BigDecimal;/*** @author qzz* @date 2023/3/21*/
@Data
@AllArgsConstructor
public class User {/*** 用户id*/private Integer id;/*** 名称*/private String name;/*** sex*/private String sex;/*** 年龄*/private Integer age;/*** 部门*/private String department;/*** 薪资*/private BigDecimal salary;
}

创建UserService.class 用户信息业务逻辑类

package com.example.demo.service;import com.example.demo.entity.User;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;/*** 用户信息业务逻辑类* @author qzz* @date 2024/6/21*/
@Service
public class UserService {/*** 获取用户列表* @return*/public List<User> getUserList(){List<User> userList = new ArrayList<>();userList.add(new User(1,"张三","男",26, "研发部", BigDecimal.valueOf(3000)));userList.add(new User(2,"李斯","男",30, "财务部", BigDecimal.valueOf(2000)));userList.add(new User(3,"张倩","女",26, "人事部", BigDecimal.valueOf(1600)));userList.add(new User(4,"吴昕","女",30, "研发部", BigDecimal.valueOf(2000)));userList.add(new User(5,"刘希","女",26, "财务部", BigDecimal.valueOf(1300)));return userList;}
}

一、查询方法

1.1 forEach

使用forEach()遍历列表信息。

    /*** 1.使用forEach()遍历列表信息*/@Testpublic void forEachTest(){//获取用户列表List<User> userList = userService.getUserList();//遍历用户列表 方法一:userList.forEach(user -> {System.out.println(user);});System.out.println();//遍历用户列表 方法二:     函数式接口 变量名 = 类实例::方法名userList.forEach(System.out::println);}

控制台输出:
在这里插入图片描述

1.2 filter(T -> boolean)

使用filter()过滤列表数据。

【示例】获取部门为’研发部’的用户列表

    /*** 2.使用filter()过滤列表数据*/@Testpublic void filterTest(){//获取用户列表List<User> userList = userService.getUserList();//获取部门为'研发部'的用户列表userList = userList.stream().filter(user -> user.getDepartment().equals("研发部")).collect(Collectors.toList());//遍历用户列表userList.forEach(System.out::println);}

控制台输出:
在这里插入图片描述

1.3 filterAny() 和 filterFirst()

使用 filterAny() 和 filterFirst() 获取第一条数据。

    /*** 3.filterAny()和filterFirst() :获取第一条数据*/@Testpublic void filterAnyTest(){//获取用户列表List<User> userList = userService.getUserList();//获取用户名称为'张三'的用户信息,如果没有找到则返回nullUser user = userList.stream().filter(u -> u.getName().equals("张三")).findAny().orElse(null);//输出用户信息System.out.println(user);}

控制台输出:
在这里插入图片描述
注意:findFirst() 和 findAny() 都是获取列表中的第一条数据,但是findAny()操作,返回的元素是不确定的,对于同一个列表多次调用findAny()有可能会返回不同的值。使用findAny()是为了更高效的性能。

如果是数据较少,串行地情况下,一般会返回第一个结果,如果是并行(parallelStream并行流)的情况,那就不能确保是第一个。

例如:使用parallelStream并行流,findAny() 返回的就不一定是第一条数据

//parallelStream方法能生成并行流,使用filterAny返回的 不一定是第一条数据
User user = userList.parallelStream().filter(u -> u.getName().startsWith("wsq")).findAny().orElse(null);

1.4 map(T -> R) 和 flatMap(T -> Stream)

使用map()将流中的每一个元素 T 映射为 R(类似类型转换)
使用flatmap()将流中的每一个元素 T 映射为 一个流,再把每一个流连接成为一个流。

【示例】使用map()方法获取用户列表中的名称列。

    /*** 4.1使用map()获取列元素*/@Testpublic void mapTest(){//获取用户列表List<User> userList = userService.getUserList();//获取用户名称列表List<String> nameList = userList.stream().map(User::getName).collect(Collectors.toList());
//        或者:List<String> nameList = userList.stream().map(user -> user.getName()).collect(Collectors.toList());//输出用户名称信息nameList.forEach(System.out::println);}

控制台输出:
在这里插入图片描述
【示例】使用flatmap()方法将流中的每一个元素连接成为一个流。

    /*** 4.2使用flatMap()将流中的每一个元素连接成为一个流*/@Testpublic void flatMapTest(){//创建城市List<String> cityList = new ArrayList<>();cityList.add("北京;上海;深圳;");cityList.add("广州;武汉;杭州;");//分隔城市列表,使用 flatMap()将流中的每一个元素连接成为一个流cityList = cityList.stream().map(city -> city.split(";")).flatMap(Arrays::stream).collect(Collectors.toList());//输出城市列表cityList.forEach(System.out::println);}

控制台输出:
在这里插入图片描述

1.5 distinct()

使用 distinct()方法可以去除重复的数据。

【示例】获取部门列表,并去除重复数据

    /*** 5.distinct()去除重复的数据*/@Testpublic void distinct(){//获取用户列表List<User> userList = userService.getUserList();//获取部门列表,并去除重复数据List<String> departmentList = userList.stream().map(User::getDepartment).distinct().collect(Collectors.toList());//输出部门列表departmentList.forEach(System.out::println);}

控制台输出:
在这里插入图片描述

1.6 limit(long n) 和 skip(long n)

limit(long n) 方法用于返回前n条数据,skip(long n)方法用于跳过前n条数据。

【示例】获取用户列表,要求跳过第1条数据后的前3条数据

/*** 6.limit(long n) 和 skip(long n)*/@Testpublic void limitAndSkipTest(){//获取用户列表List<User> userList = userService.getUserList();//获取用户列表,要求 跳过第一条数据后的前3条数数据userList = userList.stream().skip(1).limit(3).collect(Collectors.toList());//输出用户列表userList.forEach(System.out::println);}

控制台输出:
在这里插入图片描述

二、判断方法

2.1 anyMatch(T -> boolean)

使用 anyMatch(T -> boolean) 判断流中是否 有一个元素 匹配给定的 T -> boolean 条件

2.2 allMatch(T -> boolean)

使用 allMatch(T -> boolean) 判断流中是否 所有元素 都匹配给定的 T -> boolean 条件。

2.3 noneMatch(T -> boolean)

使用 noneMatch(T -> boolean) 流中是否 没有元素 匹配给定的 T -> boolean 条件。

【示例】使用 anyMatch()、allMatch()、noneMatch() 进行判断。

    /*** 使用 anyMatch()、allMatch()、noneMatch() 进行判断*/@Testpublic void matchTest(){//获取用户列表List<User> userList = userService.getUserList();//判断用户列表中 是否存在 名称为”张三“ 的 数据boolean result1 = userList.stream().anyMatch(user -> user.getName().equals("张三"));//判断用户名称   是否都包含”张三“ 的 数据boolean result2 = userList.stream().allMatch(user -> user.getName().contains("张三"));//判断用户名称   是否存在都不包含”张三“ 的 数据boolean result3 = userList.stream().noneMatch(user -> user.getName().contains("张三"));//输出用户列表System.out.println(result1);System.out.println(result2);System.out.println(result3);}

控制台输出:
在这里插入图片描述

三、统计方法

3.1 reduce((T, T) -> T) 和 reduce(T, (T, T) -> T)

使用 reduce((T, T) -> T) 和 reduce(T, (T, T) -> T) 用于组合流中的元素,如求和,求积,求最大值等。

【示例】使用 reduce() 求用户列表中年龄的最大值、最小值、总和

    /*** 使用 reduce() 求用户列表中年龄的最大值、最小值、总和*/@Testpublic void reduceTest(){//获取用户列表List<User> userList = userService.getUserList();//用户列表中年龄的 最大值、最小值、总和int maxVal = userList.stream().map(User::getAge).reduce(Integer::max).get();int minVal = userList.stream().map(User::getAge).reduce(Integer::min).get();int sumVal = userList.stream().map(User::getAge).reduce(0,Integer::sum);//打印结果System.out.println("最大年龄:" + maxVal);System.out.println("最小年龄:" + minVal);System.out.println("年龄总和:" + sumVal);}

控制台输出:
在这里插入图片描述

3.2 mapToInt(T -> int) 、mapToDouble(T -> double) 、mapToLong(T -> long)

int sumVal = userList.stream().map(User::getAge).reduce(0,Integer::sum);计算元素总和的方法其中暗含了装箱成本,map(User::getAge) 方法过后流变成了 Stream 类型,而每个 Integer 都要拆箱成一个原始类型再进行 sum 方法求和,这样大大影响了效率。

针对这个问题 Java 8 有良心地引入了数值流 IntStream, DoubleStream, LongStream,这种流中的元素都是原始数据类型,分别是 int,double,long

流转换为数值流

  • mapToInt(T -> int) : return IntStream
  • mapToDouble(T -> double) : return DoubleStream
  • mapToLong(T -> long) : return LongStream

【示例】使用 mapToInt() 求用户列表中年龄的最大值、最小值、总和、平均值

/*** 使用 mapToInt() 求用户列表中年龄的最大值、最小值、总和、平均值*/@Testpublic void mapToIntTest(){//获取用户列表List<User> userList = userService.getUserList();//用户列表中年龄的 最大值、最小值、总和、平均值int maxVal = userList.stream().mapToInt(User::getAge).max().getAsInt();int minVal = userList.stream().mapToInt(User::getAge).min().getAsInt();int sumVal = userList.stream().mapToInt(User::getAge).sum();double aveVal = userList.stream().mapToInt(User::getAge).average().getAsDouble();//打印结果System.out.println("最大年龄:" + maxVal);System.out.println("最小年龄:" + minVal);System.out.println("年龄总和:" + sumVal);System.out.println("平均年龄:" + aveVal);}

控制台输出:
在这里插入图片描述

3.3 使用 counting() 或 count()

使用 counting() 或 count() 可以对列表数据进行统计。

【示例】使用 count() 统计用户列表信息。

    /*** 使用 counting() 或 count() 统计*/@Testpublic void countTest(){//获取用户列表List<User> userList = userService.getUserList();//统计研发部的人数,使用counting()方法进行统计Long departCount = userList.stream().filter(user -> user.getDepartment().equals("研发部")).collect(Collectors.counting());//统计30岁以上的人数,使用count()方法进行统计(推荐)Long ageCount = userList.stream().filter(user -> user.getAge() >= 30).count();//统计薪资大于1500元以上的人数Long salaryCount = userList.stream().filter(user -> user.getSalary().compareTo(BigDecimal.valueOf(1500)) == 1).count();//打印结果System.out.println("研发部的人数:" + departCount + "人");System.out.println("30岁以上的人数:" + ageCount + "人");System.out.println("薪资大于1500元以上的人数:" + salaryCount + "人");}

控制台输出:
在这里插入图片描述

3.4 summingInt() 、summingLong()、summingDouble()

用于计算总和,需要一个函数参数

    /*** 使用 summingInt() 、summingLong()、summingDouble() 计算总和*/@Testpublic void sumTest(){//获取用户列表List<User> userList = userService.getUserList();//计算年龄总和int sunAge = userList.stream().collect(Collectors.summingInt(User::getAge));//打印结果System.out.println("年龄总和:" + sunAge);}

控制台输出:
在这里插入图片描述

3.5 averagingInt() 、averagingLong()、averagingDouble()

用于计算平均值

/*** 使用 averagingInt() 、averagingLong()、averagingDouble() 计算平均值*/@Testpublic void averagingTest(){//获取用户列表List<User> userList = userService.getUserList();//计算平均年龄Double aveAge = userList.stream().collect(Collectors.averagingInt(User::getAge));//打印结果System.out.println("平均年龄:" + aveAge);}

控制台输出:
在这里插入图片描述

3.6 summarizingInt()、summarizingLong()、summarizingDouble()

这三个方法比较特殊,比如 summarizingInt 会返回 IntSummaryStatistics 类型

IntSummaryStatistics类提供了用于计算的平均值、总数、最大值、最小值、总和等方法
方法如下图:

    /*** 使用 IntSummaryStatistics 统计:最大值、最小值、总和、平均值、总数*/@Testpublic void summarizingIntTest(){//获取用户列表List<User> userList = userService.getUserList();//获取IntSummaryStatistics对象IntSummaryStatistics ageStatistics = userList.stream().collect(Collectors.summarizingInt(User::getAge));//统计:最大值、最小值、总和、平均值、总数System.out.println("最大年龄:" + ageStatistics.getMax());System.out.println("最小年龄:" + ageStatistics.getMin());System.out.println("年龄总和:" + ageStatistics.getSum());System.out.println("平均年龄:" + ageStatistics.getAverage());System.out.println("员工总数:" + ageStatistics.getCount());}

控制台输出:
在这里插入图片描述

3.7 BigDecimal类型的统计

对于资金相关的字段,通常会使用BigDecimal数据类型

【示例】统计用户薪资信息

    /*** BigDecimal类型的统计*/@Testpublic void bigDecimalTest(){//获取用户列表List<User> userList = userService.getUserList();//最高薪资BigDecimal maxSalary = userList.stream().map(User::getSalary).max((x1,x2) -> x1.compareTo(x2)).get();//最低薪资BigDecimal minSalary = userList.stream().map(User::getSalary).min((x1,x2) -> x1.compareTo(x2)).get();//薪资总和BigDecimal sumSalary = userList.stream().map(User::getSalary).reduce(BigDecimal.ZERO, BigDecimal::add);//平均薪资BigDecimal aveSalary = userList.stream().map(User::getSalary).reduce(BigDecimal.ZERO, BigDecimal::add).divide(BigDecimal.valueOf(userList.size()), 2, BigDecimal.ROUND_HALF_UP);//打印统计结果System.out.println("最高薪资: " + maxSalary + "元");System.out.println("最低薪资: " + minSalary + "元");System.out.println("薪资总和: " + sumSalary + "元");System.out.println("平均薪资: " + aveSalary + "元");}

控制台输出:
在这里插入图片描述

四、排序方法

4.1 sorted() / sorted((T,T) -> int)

如果流中的元素的类实现了 Comparable 接口,即有自己的排序规则,那么可以直接调用 sorted() 方法对元素进行排序,如 Stream。反之, 需要调用 sorted((T, T) -> int) 实现 Comparator 接口

【示例】根据用户年龄进行排序。

/*** 使用 sorted() 排序*/
@Test
public void sortedTest(){//获取用户列表List<User> userList = userService.getUserList();//根据年龄排序(升序)userList = userList.stream().sorted((u1,u2) -> u1.getAge() - u2.getAge()).collect(Collectors.toList());//推荐(升序):userList = userList.stream().sorted(Comparator.comparingInt(User::getAge)).collect(Collectors.toList());//降序:userList = userList.stream().sorted(Comparator.comparingInt(User::getAge).reversed()).collect(Collectors.toList());//遍历用户列表userList.forEach(System.out::println);
}

控制台输出:
在这里插入图片描述

五、分组方法

5.1 groupingBy

使用 groupingBy() 将数据进行分组,最终返回一个 Map 类型。

【示例】根据部门对用户列表进行分组

/*** 使用 groupingBy() 分组*/@Testpublic void groupingByTest(){//获取用户列表List<User> userList = userService.getUserList();//根据部门对用户列表进行分组Map<String, List<User>> userMap = userList.stream().collect(Collectors.groupingBy(User::getDepartment));//遍历分组后的结果userMap.forEach((key,value) -> {System.out.println(key + ": ");value.forEach(System.out::println);System.out.println("-----------------------------------------------------");});}

控制台输出:
在这里插入图片描述

5.2 多级分组

groupingBy 可以接受一个第二参数实现多级分组。

【示例】根据部门和性别对用户列表进行分组。

    /*** 使用 groupingBy() 多级分组*/@Testpublic void multGroupingByTest(){//获取用户列表List<User> userList = userService.getUserList();//根据部门和性别对用户列表进行分组Map<String, Map<String,List<User>>> userMap = userList.stream().collect(Collectors.groupingBy(User::getDepartment,Collectors.groupingBy(User::getSex)));//遍历分组后的结果userMap.forEach((key1,map) -> {System.out.println(key1 + ": ");map.forEach((key2,user)->{System.out.println(key2 + ": ");user.forEach(System.out::println);});System.out.println("-----------------------------------------------------");});}

控制台输出:
在这里插入图片描述

5.3 分组汇总

【示例】根据部门进行分组,汇总各个部门用户的平均年龄。

    /*** 使用 groupingBy() 分组汇总*/@Testpublic void groupingByCollectTest(){//获取用户列表List<User> userList = userService.getUserList();//根据部门进行分组,汇总各个部门用户的平均年龄Map<String, Double> userMap = userList.stream().collect(Collectors.groupingBy(User::getDepartment, Collectors.averagingInt(User::getAge)));//遍历分组后的结果userMap.forEach((key,value) -> {System.out.println(key + "的平均年龄: " + value);});}

控制台输出:
在这里插入图片描述

六、List的合并

6.1 并集

    /*** 得到两个集合的并集*/@Testpublic void unionTest(){List<String> list1 = new ArrayList<>();list1.add("aaa");list1.add("bbb");list1.add("ccc");list1.add("ddd");List<String> list2 = new ArrayList<>();list2.add("aaa");list2.add("ccc");list2.add("ddd");list2.add("eee");list2.add("fff");list2.add("aaa1");list2.add("aaa2");//根据整个对象是否一致来去重合并得到集合System.out.println("并集写法 [去重]");List<String> collect = Stream.of(list1, list2).flatMap(Collection::stream).distinct().collect(Collectors.toList());System.out.println(collect.toString());}

6.2 交集

    /*** 得到两个集合的交集*/@Testpublic void unionTest(){List<String> list1 = new ArrayList<>();list1.add("aaa");list1.add("bbb");list1.add("ccc");list1.add("ddd");List<String> list2 = new ArrayList<>();list2.add("aaa");list2.add("ccc");list2.add("ddd");list2.add("eee");list2.add("fff");list2.add("aaa1");list2.add("aaa2");System.out.println("交集写法 [去重]");List<String> collect1 = list1.stream().filter(s-> list2.contains(s)).distinct().collect(Collectors.toList());System.out.println(collect1.toString());}

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

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

相关文章

容器之按钮盒构件演示

代码; #include <gtk-2.0/gtk/gtk.h> #include <glib-2.0/glib.h> #include <gtk-2.0/gdk/gdkkeysyms.h> #include <stdio.h>int main(int argc, char *argv[]) {gtk_init(&argc, &argv);GtkWidget *window;window gtk_window_new(GTK_WINDO…

xargs 传参

xargs的默认命令是 echo&#xff0c;空格是默认定界符。这意味着通过管道传递给 xargs的输入将会包含换行和空白&#xff0c;不过通过 xargs 的处理&#xff0c;换行和空白将被空格取代。xargs是构建单行命令的重要组件之一。 xargs -n1 // 一次输出一个参数到一行&#xf…

Python学习笔记16:进阶篇(五)异常处理

异常 在编程中&#xff0c;异常是指程序运行过程中发生的意外事件&#xff0c;这些事件通常中断了正常的指令流程。它们可能是由于错误的输入数据、资源不足、非法操作或其他未预料到的情况引起的。Python中&#xff0c;当遇到这类情况时&#xff0c;会抛出一个异常对象&#…

最详细的Selenium+Pytest自动化测试框架实战

前言 selenium自动化 pytest测试框架 本章你需要 一定的python基础——至少明白类与对象&#xff0c;封装继承 一定的selenium基础——本篇不讲selenium&#xff0c; 测试框架简介 测试框架有什么优点呢&#xff1a; 代码复用率高&#xff0c;如果不使用框架的话&#xff…

2004年-2022年 全国31省市场分割指数数据

市场分割指数在经济学领域是一个关键的概念&#xff0c;特别是在评估不同区域市场一体化水平时。陆铭等学者深入研究了市场分割问题&#xff0c;并对市场分割指数给出了定义&#xff1a;它是一个衡量在相同时间点不同区域或同一区域在不同时间点的某类商品相对价格差异的指标。…

几种常见的滤波器样式

IIR Peaking Filter IIR LowShelf Filter IIR HighShelf Filter 4. IIR LowPassFilter 5. IIR HighPass Filter FIR PeakingFilter FIR LowShelf Filter 8. FIR HighShelf Filter 8. FIR LowPass Filter 10. FIR HighPass Filter

OpenHarmony-HDF驱动框架介绍及加载过程分析

前言 HarmonyOS面向万物互联时代&#xff0c;而万物互联涉及到了大量的硬件设备&#xff0c;这些硬件的离散度很高&#xff0c;它们的性能差异与配置差异都很大&#xff0c;所以这要求使用一个更灵活、功能更强大、能耗更低的驱动框架。OpenHarmony系统HDF驱动框架采用C语言面…

【Kafka】Kafka Broker工作流程、节点服役与退役、副本、文件存储、高效读写数据-08

【Kafka】Kafka Broker工作流程、节点服役与退役、副本、文件存储、高效读写数据 1. Kafka Broker 工作流程1.1 Zookeeper 存储的 Kafka 信息1.2 Kafka Broker总体工作流程1.2.1 Controller介绍 1.3 Broker 重要参数 2. 节点服役与退役3. Kafka副本 1. Kafka Broker 工作流程 …

GUI Guider(V1.7.2) 设计UI在嵌入式系统上的应用(N32G45XVL-STB)

目录 概述 1 使用GUI Guider 设计UI 1.1 创建页面 1.2 页面切换事件实现 1.3 生成代码和仿真 1.3.1 生成和编译代码 1.3.2 仿真UI 2 GUI Guider生成的代码结构 2.1 代码结构介绍 2.2 Project目录下的文件 3 板卡上移植UI 3.1 加载代码至工程目录 3.2 主函数中调…

【环境变量问题:计算机删除环境变量的恢复方法;此环境变量太大。此对话框允许将值设置为最长2047个字符】

不小心误删了win10系统环境变量可以试试下文方法恢复。 本方法针对修改环境变量未重启的用户可以使用&#xff0c;如果修改环境变量&#xff0c;然后还重启了&#xff0c;只能说重新来。 方法一&#xff1a;使用命令提示符恢复 被修改的系统Path只是同步到了注册表中&#x…

2024软考系规考前复习20问!看看你能答上来多少

今天给大家整理了——2024系统规划与管理师考前20问&#xff0c;这是一份很重要的软考备考必看干货&#xff0c;包含很多核心知识点。有PDF版&#xff0c;可打印下来&#xff0c;过完一遍教材后&#xff0c;来刷一刷、背一背&#xff0c;说不定可以帮你拿下不少分。 第1问- 信息…

2024.6.23周报

目录 摘要 ABSTRACT 一、文献阅读 一、题目 二、摘要 三、网络架构 四、创新点 五、文章解读 1、Introduction 2、Method 3、实验 4、结论 二、代码实验 总结 摘要 本周阅读了一篇题目为NAS-PINN: NEURAL ARCHITECTURE SEARCH-GUIDED PHYSICS-INFORMED NEURAL N…

解决电脑关机难题:电脑关不了机的原因以及方法

在使用电脑的日常生活中&#xff0c;有时会遇到一些烦人的问题&#xff0c;其中之一就是电脑关不了机。当您尝试关闭电脑时&#xff0c;它可能会停留在某个界面&#xff0c;或者根本不响应关机指令。这种情况不仅令人困惑&#xff0c;还可能导致数据丢失或系统损坏。 在本文中…

DS:堆的应用——两种算法和TOP-K问题

欢迎来到Harper.Lee的学习世界&#xff01;博主主页传送门&#xff1a;Harper.Lee的博客主页想要一起进步的uu可以来后台找我哦&#xff01; 一、堆的排序 1.1 向上调整——建小堆 1.1.1 代码实现 //时间复杂度&#xff1a;O(N*logN) //空间复杂度&#xff1a;O(logN) for (…

计算机网络知识点汇总

计算机网络知识点汇总 第1章计算机网络体系结构 1.1 计算机网络概述 1.1.1 计算机网络的概念 ​ 计算机网络是由若干个结点(node)和连接这些结点的链路(link)组成。网络中的结点可以是就三级、集线器、交换机、或者路由器等&#xff0c;网络之间通过路由器进行互联&#xf…

Nodejs 第七十九章(Kafka进阶)

kafka前置知识在上一章讲过了 不再复述 kafka进阶 1. server.properties配置文件 server.properties是Kafka服务器的配置文件&#xff0c;它用于配置Kafka服务的各个方面&#xff0c;包括网络设置、日志存储、消息保留策略、安全认证 #broker的全局唯一编号&#xff0c;不能…

MySQL数据库初体验+数据库管理(其一)

【1】 操作系统介绍&#xff1a; Linux操作系统有 RedHat CentOS Debian Ubuntu OpenSUSE 信创标准 国产系统 &#xff1a; 华为&#xff08;欧拉&#xff09; 阿里&#xff08;龙蜥&#xff09; 腾讯 &#xff08;tencentOS&#xff09; 麒麟&#xf…

【日记】梦到兄长要给鳄鱼换牙齿……(421 字)

正文 今天中午睡了一个小时多一点&#xff0c;做了一个很奇怪的梦。梦见兄长要给一条鳄鱼换牙齿&#xff0c;还说早上不好操作&#xff0c;要三天之后的中午或晚上&#xff0c;颇有一种翻黄历寻个良辰吉日之感。但我没那样大的耐性&#xff0c;便捏住鳄鱼的嘴&#xff0c;左摔右…

实战18:基于tkinter+jupyter notebook开发的情感分析系统

项目演示: 完整代码: import pandas as pd import numpy as np from collections import Counter import re import jieba from tqdm import tqdm from sklearn.metrics import roc_curve, auc import joblib import gensim from sklearn.svm import SVC from gensim.mode…

STM32小项目———感应垃圾桶

文章目录 前言一、超声波测距1.超声波简介2.超声波测距原理2.超声波测距步骤 二、舵机的控制三、硬件搭建及功能展示总结 前言 一个学习STM32的小白~ 有问题请评论区或私信指出 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 一、超声波测距 1.超声波…