Java8 Stream(三):StreamAPI
初始数据
Animal类
public class Animal{private String name;private String type;private Integer age;public String getName() {return name;}public void setName(String name) {this.name = name;}public String getType() {return type;}public void setType(String type) {this.type = type;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}public Animal() {}public Animal(String name, String type, Integer age) {this.name = name;this.type = type;this.age = age;}@Overridepublic String toString() {return "{name='" + name + '\'' +", type='" + type + '\'' +", age=" + age + "}";}
}
初始数据
//初始Integer数组
List<Integer> list = Arrays.asList(4, 3, 7, 9, 8, 2, 1);
//初始Animal数组
List<Animal> animalList = new ArrayList<>();
animalList.add(new Animal("皮皮", "狗", 5));
animalList.add(new Animal("犇犇", "狗", 1));
animalList.add(new Animal("小六", "狗", 2));
animalList.add(new Animal("咪咪", "猫", 3));
animalList.add(new Animal("胖虎", "猫", 10));
animalList.add(new Animal("来福", "猫", 2));
1 遍历/查找/匹配 foreach/find/match
1.1. forEach 遍历元素
//foreach 遍历输出元素//遍历初始Integer数组System.out.println("遍历初始Integer数组:");list.stream().forEach(System.out::println);//遍历初始Animal数组数组System.out.println("遍历初始Animal数组:");animalList.stream().forEach(System.out::println);
输出结果:
遍历初始Integer数组:
4
3
7
9
8
2
1
遍历初始Animal数组:
{name='皮皮', type='狗', age=5}
{name='犇犇', type='狗', age=1}
{name='小六', type='狗', age=2}
{name='咪咪', type='猫', age=3}
{name='胖虎', type='猫', age=10}
{name='来福', type='猫', age=2}
1.2. find 查找
//find 查找
//findFirst 查找初始Integer数组中的第一个
Optional<Integer> findFirstInteger = list.stream().findFirst();
//findFirst 查找初始Integer数组中的第一个
Optional<Animal> findFirstAnimal = animalList.stream().findFirst();
System.out.println("查找初始Integer数组中的第一个:" + findFirstInteger.get());
System.out.println("查找初始Integer数组中的第一个:" + findFirstAnimal.get());//findAny 查找初始Integer数组中的任意一个(适用于并行流)
Optional<Integer> findAnyInteger = list.parallelStream().findAny();
//findAny 查找初始Animal数组中的任意一个(适用于并行流)
Optional<Animal> findAnyAnimal = animalList.parallelStream().findAny();
System.out.println("查找初始Integer数组中的任意一个(适用于并行流):" + findAnyInteger.get());
System.out.println("查找初始Animal数组中的任意一个(适用于并行流):" + findAnyAnimal.get());
输出结果:
查找初始Integer数组中的第一个:4
查找初始Integer数组中的第一个:{name='皮皮', type='狗', age=5}
查找初始Integer数组中的任意一个(适用于并行流):8
查找初始Animal数组中的任意一个(适用于并行流):{name='皮皮', type='狗', age=5}
1.3. match 匹配
//match 匹配
//anyMatch 初始Integer数组任意一个满足条件 数值大于6
boolean anyMatchInteger = list.stream().anyMatch(x -> x > 6);
//anyMatch 初始Animal数组任意一个满足条件 年龄大于2
boolean anyMatchAnimal = animalList.stream().anyMatch(x -> x.getAge() > 2);
System.out.println("初始Integer数组任意一个满足条件 数值大于6:" + anyMatchInteger);
System.out.println("初始Animal数组任意一个满足条件 年龄大于2:" + anyMatchAnimal);//allMatch 初始Integer数组全部满足条件 数值大于6
boolean allMatchInteger = list.stream().allMatch(x -> x > 6);
//anyMatch 初始Animal数组全部满足条件 年龄大于2
boolean allMatchAnimal = animalList.stream().allMatch(x -> x.getAge() > 2);
System.out.println("初始Integer数组全部满足条件 数值大于6:" + allMatchInteger);
System.out.println("初始Animal数组全部满足条件 年龄大于2:" + allMatchAnimal);
输出结果:
初始Integer数组任意一个满足条件 数值大于6:true
初始Animal数组任意一个满足条件 年龄大于2:true
初始Integer数组全部满足条件 数值大于6:false
初始Animal数组全部满足条件 年龄大于2:false
2 筛选 filter
//filter 初始Integer数组中全部满足条件 数值大于6
List<Integer> newListInteger = list.stream().filter(x -> x > 6).collect(Collectors.toList());
//filter 初始Animal数组中全部满足条件 年龄大于2
List<Animal> newListAnimal = animalList.stream().filter(x -> x.getAge() > 2).collect(Collectors.toList());System.out.println("初始Integer数组中全部满足条件 数值大于6:");
newListInteger.forEach(System.out::println);
System.out.println("初始Animal数组中全部满足条件 年龄大于2:");
newListAnimal.forEach(System.out::println);
输出结果:
初始Integer数组中全部满足条件 数值大于6:
7
9
8
初始Animal数组中全部满足条件 年龄大于2:
{name='皮皮', type='狗', age=5}
{name='咪咪', type='猫', age=3}
{name='胖虎', type='猫', age=10}
3 聚合 max/min/count
3.1 max 获取最大元素 min 获取最小元素
//max
//max 对初始Integer数组 自然排序 获取最大元素
Optional<Integer> maxInteger1 = list.stream().max(Integer::compareTo);
//max 对初始Animal数组 自然排序 获取最大元素
//需要Animal 实现Comparable接口
Optional<Animal> maxAnimal1 = animalList.stream().max(Animal::compareTo);
System.out.println("对初始Integer数组 自然排序 获取最大元素:" + maxInteger1.get());
System.out.println("对初始Animal数组 自然排序 获取最大元素:" + maxAnimal1.get());//max 对初始Integer数组 自定义排序 排除数值9 获取最大元素
Optional<Integer> maxInteger2 = list.stream().max((o1, o2) -> {if (o1 == 9) {return -1;}return o1.compareTo(o2);
});
//max 对初始Animal数组 自定义排序 获取最大元素
Optional<Animal> maxAnimal2 = animalList.stream().max((o1, o2) -> {return o1.getAge() - o2.getAge();
});
Optional<Animal> maxAnimal3 = animalList.stream().max(Comparator.comparingInt(Animal::getAge));
System.out.println("对初始Integer数组 自定义排序 排除数值9 获取最大元素:" + maxInteger2.get());
System.out.println("对初始Animal数组 自定义排序 获取最大元素:" + maxAnimal2.get());
System.out.println("对初始Animal数组 自定义排序 获取最大元素:" + maxAnimal3.get());
Animal类修改
public class Animal implements Comparable {
...省略
...省略
@Overridepublic int compareTo(Object o) {Animal animal = (Animal) o;return this.getAge() - animal.getAge();}
}
输出结果:
对初始Integer数组 自然排序 获取最大元素:9
对初始Animal数组 自然排序 获取最大元素:{name='胖虎', type='猫', age=10}
对初始Integer数组 自定义排序 排除数值9 获取最大元素:8
对初始Animal数组 自定义排序 获取最大元素:{name='胖虎', type='猫', age=10}
对初始Animal数组 自定义排序 获取最大元素:{name='胖虎', type='猫', age=10}
3.2 count 获取元素数量
//count 初始Integer数组 数值大于6元素数量
long countInteger = list.stream().filter(x -> x > 6).count();
//count 初始Animal数组 年龄大于2元素数量
long countAnimal = animalList.stream().filter(x -> x.getAge() > 2).count();
System.out.println("初始Integer数组 数值大于6元素数量:" + countInteger);
System.out.println("初始Animal数组 年龄大于2元素数量:" + countAnimal);
结果输出:
初始Integer数组 数值大于6元素数量:3
初始Animal数组 年龄大于2元素数量:3
4 map 映射
4.1 map 一对一映射
//map 一对一映射 初始Integer数组每个元素+10
List<Integer> mapListInteger = list.stream().map(x -> x + 10).collect(Collectors.toList());
System.out.println("一对一映射 初始Integer数组每个元素+10:");
mapListInteger.forEach(System.out::println);
//map 一对一映射 初始Animal数组每个名称拼接~~~
List<Animal> mapListAnimal = animalList.stream().map(x -> {x.setName(x.getName() + "~~~");return x;}).collect(Collectors.toList());
System.out.println("一对一映射 初始Animal数组每个名称拼接~~~:");
mapListAnimal.forEach(System.out::println);
结果输出:
一对一映射 初始Integer数组每个元素+10:
14
13
17
19
18
12
11
一对一映射 初始Animal数组每个名称拼接~~~:
{name='皮皮~~~', type='狗', age=5}
{name='犇犇~~~', type='狗', age=1}
{name='小六~~~', type='狗', age=2}
{name='咪咪~~~', type='猫', age=3}
{name='胖虎~~~', type='猫', age=10}
{name='来福~~~', type='猫', age=2}
4.2 flatMap 1对多映射
//flatMapListInteger 一对多映射 初始Integer数组 一个+10,一个-10:
List<Integer> flatMapListInteger = list.stream().flatMap(x -> {List<Integer> integers = new ArrayList<>();integers.add(x + 10);integers.add(x - 10);return integers.stream();
}).collect(Collectors.toList());
System.out.println("一对多映射 初始Integer数组 一个+10,一个-10:");
flatMapListInteger.forEach(System.out::println);//flatMapListAnimal 一对多映射 初始Animal数组 名称一个拼接~~~,一个拼接!!!
//需要Animal 实现Cloneable接口
List<Animal> flatMapListAnimal = animalList.stream().flatMap(x -> {List<Animal> animals = new ArrayList<>();Animal clone = x.clone();x.setName(x.getName() + "~~~");clone.setName(clone.getName() + "!!!");animals.add(x);animals.add(clone);return animals.stream();
}).collect(Collectors.toList());
System.out.println("一对多映射 初始Animal数组 名称一个拼接~~~,一个拼接!!!");
flatMapListAnimal.forEach(System.out::println);
Animal类修改
@Overridepublic Animal clone() {Animal animal = null;try {animal = (Animal) super.clone();} catch (CloneNotSupportedException e) {e.printStackTrace();}return animal;}
输出结果:
一对多映射 初始Integer数组 一个+10,一个-10:
14
-6
13
-7
17
-3
19
-1
18
-2
12
-8
11
-9
一对多映射 初始Animal数组 名称一个拼接~~~,一个拼接!!!
{name='皮皮~~~~~~', type='狗', age=5}
{name='皮皮~~~!!!', type='狗', age=5}
{name='犇犇~~~~~~', type='狗', age=1}
{name='犇犇~~~!!!', type='狗', age=1}
{name='小六~~~~~~', type='狗', age=2}
{name='小六~~~!!!', type='狗', age=2}
{name='咪咪~~~~~~', type='猫', age=3}
{name='咪咪~~~!!!', type='猫', age=3}
{name='胖虎~~~~~~', type='猫', age=10}
{name='胖虎~~~!!!', type='猫', age=10}
{name='来福~~~~~~', type='猫', age=2}
{name='来福~~~!!!', type='猫', age=2}
5 归约 reduce
//reduce 求和方式1
Optional<Integer> sum1 = list.stream().reduce((x, y) -> x + y);
//reduce 求和方式2
Optional<Integer> sum2 = list.stream().reduce(Integer::sum);
//reduce 求和方式3
Integer sum3 = list.stream().reduce(0, Integer::sum);
System.out.println("reduce 求和方式1:" + sum1.get());
System.out.println("reduce 求和方式2:" + sum2.get());
System.out.println("reduce 求和方式3:" + sum3);
输出结果:
reduce 求和方式1:34
reduce 求和方式2:34
reduce 求和方式3:34
6 收集 collect
6.1 归集 toList/toSet/toMap
//collect 归集 toList/toSet/toMap
List<Integer> collectList = list.stream().filter(item -> item < 8).collect(Collectors.toList());
Set<Integer> collectSet = list.stream().filter(item -> item < 8).collect(Collectors.toSet());
Map<Integer, Integer> collectMap = list.stream().filter(item -> item < 8).collect(Collectors.toMap(item -> item, item -> item));System.out.println("collect 归集toList:" + collectList);
System.out.println("collect 归集toSet:" + collectSet);
System.out.println("collect 归集toMap:" + collectMap);
输出结果:
collect 归集toList:[4, 3, 7, 2, 1]
collect 归集toSet:[1, 2, 3, 4, 7]
collect 归集toMap:{1=1, 2=2, 3=3, 4=4, 7=7}
注:如果map中有重复的key,会报错
Exception in thread "main" java.lang.IllegalStateException: Duplicate key 1at java.util.stream.Collectors.lambda$throwingMerger$0(Collectors.java:133)at java.util.HashMap.merge(HashMap.java:1254)at java.util.stream.Collectors.lambda$toMap$58(Collectors.java:1320)at java.util.stream.ReduceOps$3ReducingSink.accept(ReduceOps.java:169)at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175)at java.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.java:948)at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481)at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:708)at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)at java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:499)at com.zhow.Stream_04_Test.main(Stream_04_Test.java:33)
6.2 统计 count/averaging
// 求总数
Long count = list.stream().collect(Collectors.counting());
// 求平均
Double average = list.stream().collect(Collectors.averagingDouble(Integer::doubleValue));
// 求最高
Optional<Integer> max = list.stream().collect(Collectors.maxBy(Integer::compare));
// 求和
Integer sum = list.stream().collect(Collectors.summingInt(Integer::intValue));
// 一次性统计所有信息
DoubleSummaryStatistics collect = list.stream().collect(Collectors.summarizingDouble(Integer::intValue));System.out.println("总数:" + count);
System.out.println("平均:" + average);
System.out.println("最高:" + max);
System.out.println("总和:" + sum);
System.out.println("所有统计:" + collect);
输出结果:
总数:7
平均:4.857142857142857
最高:Optional[9]
总和:34
所有统计:DoubleSummaryStatistics{count=7, sum=34.000000, min=1.000000, average=4.857143, max=9.000000}
6.3 分组 partitioningBy/groupingBy
//分组 partitioningBy/groupingBy
// 按动物年龄大于4分组
Map<Boolean, List<Animal>> age = animalList.stream().collect(Collectors.partitioningBy(x -> x.getAge() > 4));
// 按动物类别分组
Map<String, List<Animal>> type = animalList.stream().collect(Collectors.groupingBy(Animal::getType));
// 将员工先按性别分组,再按地区分组
Map<String, Map<Boolean, List<Animal>>> ageType = animalList.stream().collect(Collectors.groupingBy(Animal::getType, Collectors.groupingBy(x -> x.getAge() > 4)));
System.out.println("按动物年龄大于4分组:" + age);
System.out.println("按动物类别分组:" + type);
System.out.println("按动物按类别、年龄:" + ageType);
结果输出:
按动物年龄大于4分组:{false=[{name='犇犇', type='狗', age=1}, {name='小六', type='狗', age=2}, {name='咪咪', type='猫', age=3}, {name='来福', type='猫', age=2}], true=[{name='皮皮', type='狗', age=5}, {name='胖虎', type='猫', age=10}]}
按动物类别分组:{狗=[{name='皮皮', type='狗', age=5}, {name='犇犇', type='狗', age=1}, {name='小六', type='狗', age=2}], 猫=[{name='咪咪', type='猫', age=3}, {name='胖虎', type='猫', age=10}, {name='来福', type='猫', age=2}]}
按动物按类别、年龄:{狗={false=[{name='犇犇', type='狗', age=1}, {name='小六', type='狗', age=2}], true=[{name='皮皮', type='狗', age=5}]}, 猫={false=[{name='咪咪', type='猫', age=3}, {name='来福', type='猫', age=2}], true=[{name='胖虎', type='猫', age=10}]}}
6.4 拼接 joining
//拼接 joining
//所有宠物名称拼接
String nameString = animalList.stream().map(Animal::getName).collect(Collectors.joining(","));
System.out.println("所有宠物名称拼接:" + nameString);
结果输出:
所有宠物名称拼接:皮皮,犇犇,小六,咪咪,胖虎,来福
6.5 归约 reducing
//归约 reducing
//宠物年龄总和
Optional<Integer> age2 = animalList.stream().map(Animal::getAge).collect(Collectors.reducing(Integer::sum));
System.out.println("宠物年龄总和:" + age2.get());
结果输出:
宠物年龄总和:23
7 排序 sorted
//7、排序
//自然排序 流中元素需实现Comparable接口
Stream<Animal> sorted1 = animalList.stream().sorted();
//按名字排序
Stream<Animal> sorted2 = animalList.stream().sorted(Comparator.comparing(Animal::getName));
//先按年龄再按名字排序
Stream<Animal> sorted3 = animalList.stream().sorted(Comparator.comparing(Animal::getAge).thenComparing(Animal::getName));
//自定义 先按年龄再按名字排序
Stream<Animal> sorted4 = animalList.stream().sorted((x, y) -> {if (x.getAge() == y.getAge()) {return x.getName().compareTo(y.getName());} else {return x.getAge() - y.getAge();}
});
System.out.println("自然排序:");
sorted1.forEach(System.out::print);
System.out.println();System.out.println("按名字排序:");
sorted2.forEach(System.out::print);
System.out.println();System.out.println("先按年龄再按名字排序:");
sorted3.forEach(System.out::print);
System.out.println();System.out.println("自定义 先按年龄再按名字排序:");
sorted4.forEach(System.out::print);
System.out.println();
结果输出:
自然排序:
{name='犇犇', type='狗', age=1}{name='小六', type='狗', age=2}{name='来福', type='猫', age=2}{name='咪咪', type='猫', age=3}{name='皮皮', type='狗', age=5}{name='胖虎', type='猫', age=10}
按名字排序:
{name='咪咪', type='猫', age=3}{name='小六', type='狗', age=2}{name='来福', type='猫', age=2}{name='犇犇', type='狗', age=1}{name='皮皮', type='狗', age=5}{name='胖虎', type='猫', age=10}
先按年龄再按名字排序:
{name='犇犇', type='狗', age=1}{name='小六', type='狗', age=2}{name='来福', type='猫', age=2}{name='咪咪', type='猫', age=3}{name='皮皮', type='狗', age=5}{name='胖虎', type='猫', age=10}
自定义 先按年龄再按名字排序:
{name='犇犇', type='狗', age=1}{name='小六', type='狗', age=2}{name='来福', type='猫', age=2}{name='咪咪', type='猫', age=3}{name='皮皮', type='狗', age=5}{name='胖虎', type='猫', age=10}
8 提取/组合
//提取/组合
//concat:合并两个流
Stream<Integer> integerStream1 = Stream.of(1, 2, 3, 4);
Stream<Integer> integerStream2 = Stream.of(5, 6, 7, 8);
List<Integer> concatList = Stream.concat(integerStream1, integerStream2).collect(Collectors.toList());
System.out.println("concat:合并两个流:" + concatList);//distinct:去重
list = Arrays.asList(4, 3, 7, 9, 8, 2, 1, 3, 4);
List<Integer> distinctList = list.stream().distinct().collect(Collectors.toList());
System.out.println("去重:" + distinctList);//limit:限制从流中获得前n个数据
List<Integer> limitList = list.stream().limit(5).collect(Collectors.toList());
System.out.println("限制从流中获得前5个数据:" + limitList);//skip:跳过前n个数据
List<Integer> skipList = list.stream().skip(5).collect(Collectors.toList());
System.out.println("跳过前5个数据:" + skipList);
结果输出:
concat:合并两个流:[1, 2, 3, 4, 5, 6, 7, 8]
去重:[4, 3, 7, 9, 8, 2, 1]
限制从流中获得前5个数据:[4, 3, 7, 9, 8]
跳过前5个数据:[2, 1, 3, 4]
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
相关文章
- 进制转换+结构体
进制转换 二进制转十六进制 一个十六进制数等于四位二进制数,通过8421码进行计算 例: 结构体 结构体是不同类型的数据集合 结构体区别于c语言中的数组,c语言中的数组只能存储相同类型的数据,但和python中的数组类似,…...
2024/5/9 12:18:44 - Redis学习(八):Redis主从复制
目录 一、主从复制是什么 二、主从复制能干什么 1、读写分离,性能扩展 2、容灾快速恢复 三、复制原理 四、常用的三种策略 1、一主二仆 2、薪火相传 3、反客为主 五、哨兵模式 1、哨兵模式是什么 2、怎么设置哨兵 3、哨兵的作用:故障恢复 一…...
2024/4/27 8:20:44 - NC204382 中序序列
题目:中序序列 题解:中序序列题目题解_牛客竞赛OJ 首先,普通地知道 先序和后序 是 无法求 中序的,因为无法判断是左儿子还是右儿子; 但是题目里有条件:“若某节点只有一个子结点,则此处将其…...
2024/5/9 4:41:08 - Java中的集合(二)
2、Set接口 Set接口以散列形式存储数据,所以元素没有顺序,可以存储一组无序,唯一的对象; Set的常用子接口有HashSet、LinkedHashSet、TreeSet。 2.1HashSet HashSet存储一组无序,且唯一的对象,这里的无…...
2024/5/8 18:55:19 - 数组设置最大数
题目: 第一行有一个整数,表示数字个数 n。 第二行有n个整数,表示给出的n个整数 Aio 输出格式 一个正整数,表示最大的整数 输入输出样例 输入 #1 复制 输出 #1 复制 34331213 13 312 343 输入 #2 复制 输出 #2 复制 742461…...
2024/5/9 8:14:45 - 初入数据结构之二叉树详解
树 什么叫做树? 树是一种重要的非线性数据结构,直观地看,它是数据元素(在树中称为结点)按分支关系组织起来的结构,很象自然界中的树那样。树结构在客观世界中广泛存在,如人类社会的族谱和各种社…...
2024/5/9 0:36:02 - Java8 Stream(二):Stream创建
三、Stream创建 Stream常见的有4中方法创建。 使用Collection下的 stream() 和 parallelStream() 方法 //1、使用Collection下的 stream() 和 parallelStream() 方法 // 创建一个顺序流 List<Integer> list Arrays.asList(1, 2, 3, 4, 5, 6); Stream<Integer>…...
2024/5/8 22:36:33 - 蓝桥杯STM32G431——测量两路PWM和占空比
测量两路PWM和占空比测量PWM频率和占空比的时序图与步骤时序图测量PWM频率和占空比的步骤:PWM输入模式内部原理图CubeMX的基础配置测量PWM频率和占空比的编程pwm_tim.c文件main.c主函数的编写测量PWM频率和占空比的时序图与步骤 时序图 测量PWM频率和占空比的步骤: 1.PWM信号…...
2024/5/8 13:23:31 - C/C++ typedef的理解 typedef void (*pfunc)(int);
C/C typedef的理解 typedef void (*pfunc)(int); 初学时: typedef int XXX,给类型int取一个别名xxx,嗯我懂了,EZ。 一段时间过后: typedef void (*pfunc)(int); ??&#…...
2024/5/8 14:39:08 - java文件转换成byte数组以及byte数组上传到文件
文件转换成byte数组 /*** 文件 File file new File("...");* param filePath* return*/public static byte[] File2byte(File filePath) {byte[] buffer null;try {FileInputStream fis new FileInputStream(filePath);ByteArrayOutputStream bos new ByteArrayO…...
2024/5/8 18:21:46 - 安全云盘需求分析(一)
最卡hi是有一个基础框架,要用到libevebtqt 下面是libevent技术栈相关以及延申内容...
2024/5/8 11:52:43 - Eclipse老是崩溃
eclipse老是崩溃,比如在ctrl点击接口实现时突然崩溃 解决:替换C:\Users\ice.eclipse目录为新的即可...
2024/5/8 21:14:56 - ctfhub密码口令---弱口令
解题思路 既知道为弱口令 那用户名一般为 admin/user之类 先尝试admin 密码进行爆破 对登录页面进行抓包 先清除所有标识把抓取到的数据密码进行标识(就是需要进行爆破的位置) 加入常用密码,进行爆破 爆破后对比数据长度,发现密码…...
2024/5/9 7:24:15 - LeetCode 42: 接雨水(困难)
LeetCode 42: 接雨水 解答 这个题需要好好分析一下,自己的思路离单调栈的标准答案就一步之遥了,就是没想出来,最近有点颓md, 代码一:单调栈 主要分析一下为什么自己的思路大体方向是正确的,但就是差最…...
2024/5/8 12:54:17 - Python爬虫学习笔记_DAY_15_Python爬虫之urllib库实战篇【Python爬虫】
p.s.高产量博主,点个关注💓不迷路! 目录 I.urllib库实战之GET请求:获取并下载电影平台指定页码的数据到本地 II.urllib库实战之POST请求:获取并下载餐饮实体店指定页码的店铺位置数据到本地 I.urllib库实战之GET请求…...
2024/5/8 17:03:26 - Android 项目总结(自定义view的Canvas位置形状变换)
/*** 变换操作*/ public class TransformView extends View {private Paint mPaint;public TransformView(Context context) {this(context, null);}public TransformView(Context context, AttributeSet attrs) {this(context, attrs, 0);}public TransformView(Context conte…...
2024/5/9 4:01:03 - 【React】<JavaScript框架>事件处理高阶函数函数柯里化
目录 一、事件处理: 二、收集表单数据: 1.受控组件: 2.非受控组件: 三、高阶函数&函数的柯里化: 1.函数柯里化: 柯里化概述: 柯里化的应用: 2.不使用柯里化:…...
2024/5/9 7:06:54 - python数据分析之数据清洗(以摩托车的销售情况数据为例)
文章目录前言一、获取数据集并寻找存在的问题1、阅读数据集描述2、查看数据并发现问题二、清洗步骤1、数据格式转换2、去重复3、缺失值处理4、异常值处理5、数据离散化参考前言 一、获取数据集并寻找存在的问题 1、阅读数据集描述 2、查看数据并发现问题 缺失值比较多 价格&…...
2024/4/20 16:22:44 - Java——I/O流
文章目录一. I/O流概述二. I/O流的分类三. 流应该怎么学习四. IO流四大家族五. 需要掌握的流1. java.io.FileInputStream常用方法2. java.io.FileOutputStream常用方法3. 文件的复制原理4. java.io.FileReader5. java.io.FileWriter6. java.io.BufferedReader7. java.io.Buffer…...
2024/4/13 21:04:57 - DOM(-)
//innerText 非标准// 1. 点击按钮,div 里面文字发生变化// 1. 获取在这里插入代码片元素var btn document.querySelector(button);var div document.querySelector(div);// 2. 注册事件btn.onclick function() {div.innerHTML 2019-6-6;//获得系统年月日---???}//元素…...
2024/5/8 13:24:17
最新文章
- Logit Standardization in Knowledge Distillation 知识蒸馏中的logit标准化
摘要 知识蒸馏涉及使用基于共享温度的softmax函数将软标签从教师转移到学生。然而,教师和学生之间共享温度的假设意味着他们的logits在logit范围和方差方面必须精确匹配。这种副作用限制了学生的表现,考虑到他们之间的能力差异,以及教师天生…...
2024/5/9 19:05:45 - 梯度消失和梯度爆炸的一些处理方法
在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言,在此感激不尽。 权重和梯度的更新公式如下: w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...
2024/5/7 10:36:02 - 2024年华为OD机试真题-智能驾驶-Java-OD统一考试(C卷)
题目描述: 有一辆汽车需要从 m*n 的地图的左上角(起点)开往地图的右下角(终点),去往每一个地区都需要消耗一定的油量,加油站可进行加油 请你计算汽车确保从起点到达终点时所需的最少初始油量说明: (1) 智能汽车可以上下左右四个方向移动1 (2) 地图上的数字取值是 0或-1 或者…...
2024/5/4 2:52:22 - Go语言中如何实现继承
完整课程请点击以下链接 Go 语言项目开发实战_Go_实战_项目开发_孔令飞_Commit 规范_最佳实践_企业应用代码-极客时间 Go语言中没有传统意义上的类和继承的概念,但可以通过嵌入类型(embedded types)来实现类似的功能。嵌入类型允许一个结构…...
2024/5/5 8:37:47 - ASP.NET Core 标识(Identity)框架系列(一):如何使用 ASP.NET Core 标识(Identity)框架创建用户和角色?
前言 ASP.NET Core 内置的标识(identity)框架,采用的是 RBAC(role-based access control,基于角色的访问控制)策略,是一个用于管理用户身份验证、授权和安全性的框架。 它提供了一套工具和库&…...
2024/5/5 15:45:29 - 【外汇早评】美通胀数据走低,美元调整
原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...
2024/5/8 6:01:22 - 【原油贵金属周评】原油多头拥挤,价格调整
原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...
2024/5/9 15:10:32 - 【外汇周评】靓丽非农不及疲软通胀影响
原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...
2024/5/4 23:54:56 - 【原油贵金属早评】库存继续增加,油价收跌
原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...
2024/5/9 4:20:59 - 【外汇早评】日本央行会议纪要不改日元强势
原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...
2024/5/4 23:54:56 - 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响
原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...
2024/5/4 23:55:05 - 【外汇早评】美欲与伊朗重谈协议
原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...
2024/5/4 23:54:56 - 【原油贵金属早评】波动率飙升,市场情绪动荡
原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...
2024/5/7 11:36:39 - 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试
原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...
2024/5/4 23:54:56 - 【原油贵金属早评】市场情绪继续恶化,黄金上破
原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...
2024/5/6 1:40:42 - 【外汇早评】美伊僵持,风险情绪继续升温
原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...
2024/5/4 23:54:56 - 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势
原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...
2024/5/8 20:48:49 - 氧生福地 玩美北湖(上)——为时光守候两千年
原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...
2024/5/7 9:26:26 - 氧生福地 玩美北湖(中)——永春梯田里的美与鲜
原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...
2024/5/4 23:54:56 - 氧生福地 玩美北湖(下)——奔跑吧骚年!
原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...
2024/5/8 19:33:07 - 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!
原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...
2024/5/5 8:13:33 - 「发现」铁皮石斛仙草之神奇功效用于医用面膜
原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...
2024/5/8 20:38:49 - 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者
原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...
2024/5/4 23:54:58 - 广州械字号面膜生产厂家OEM/ODM4项须知!
原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...
2024/5/9 7:32:17 - 械字号医用眼膜缓解用眼过度到底有无作用?
原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...
2024/5/9 17:11:10 - 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...
解析如下:1、长按电脑电源键直至关机,然后再按一次电源健重启电脑,按F8健进入安全模式2、安全模式下进入Windows系统桌面后,按住“winR”打开运行窗口,输入“services.msc”打开服务设置3、在服务界面,选中…...
2022/11/19 21:17:18 - 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。
%读入6幅图像(每一幅图像的大小是564*564) f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...
2022/11/19 21:17:16 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...
win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面,在等待界面中我们需要等待操作结束才能关机,虽然这比较麻烦,但是对系统进行配置和升级…...
2022/11/19 21:17:15 - 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...
有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows,请勿关闭计算机”的提示,要过很久才能进入系统,有的用户甚至几个小时也无法进入,下面就教大家这个问题的解决方法。第一种方法:我们首先在左下角的“开始…...
2022/11/19 21:17:14 - win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...
置信有很多用户都跟小编一样遇到过这样的问题,电脑时发现开机屏幕显现“正在配置Windows Update,请勿关机”(如下图所示),而且还需求等大约5分钟才干进入系统。这是怎样回事呢?一切都是正常操作的,为什么开时机呈现“正…...
2022/11/19 21:17:13 - 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...
Win7系统开机启动时总是出现“配置Windows请勿关机”的提示,没过几秒后电脑自动重启,每次开机都这样无法进入系统,此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一:开机按下F8,在出现的Windows高级启动选…...
2022/11/19 21:17:12 - 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...
有不少windows10系统用户反映说碰到这样一个情况,就是电脑提示正在准备windows请勿关闭计算机,碰到这样的问题该怎么解决呢,现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法:1、2、依次…...
2022/11/19 21:17:11 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...
今天和大家分享一下win7系统重装了Win7旗舰版系统后,每次关机的时候桌面上都会显示一个“配置Windows Update的界面,提示请勿关闭计算机”,每次停留好几分钟才能正常关机,导致什么情况引起的呢?出现配置Windows Update…...
2022/11/19 21:17:10 - 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...
只能是等着,别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚,只能是考虑备份数据后重装系统了。解决来方案一:管理员运行cmd:net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...
2022/11/19 21:17:09 - 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?
原标题:电脑提示“配置Windows Update请勿关闭计算机”怎么办?win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢?一般的方…...
2022/11/19 21:17:08 - 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...
关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!关机提示 windows7 正在配…...
2022/11/19 21:17:05 - 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...
钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...
2022/11/19 21:17:05 - 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...
前几天班里有位学生电脑(windows 7系统)出问题了,具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面,长时间没反应,无法进入系统。这个问题原来帮其他同学也解决过,网上搜了不少资料&#x…...
2022/11/19 21:17:04 - 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...
本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法,并在最后教给你1种保护系统安全的好方法,一起来看看!电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中,添加了1个新功能在“磁…...
2022/11/19 21:17:03 - 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...
许多用户在长期不使用电脑的时候,开启电脑发现电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机。。.这要怎么办呢?下面小编就带着大家一起看看吧!如果能够正常进入系统,建议您暂时移…...
2022/11/19 21:17:02 - 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...
配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!配置windows update失败 还原更改 请勿关闭计算机&#x…...
2022/11/19 21:17:01 - 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...
不知道大家有没有遇到过这样的一个问题,就是我们的win7系统在关机的时候,总是喜欢显示“准备配置windows,请勿关机”这样的一个页面,没有什么大碍,但是如果一直等着的话就要两个小时甚至更久都关不了机,非常…...
2022/11/19 21:17:00 - 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...
当电脑出现正在准备配置windows请勿关闭计算机时,一般是您正对windows进行升级,但是这个要是长时间没有反应,我们不能再傻等下去了。可能是电脑出了别的问题了,来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...
2022/11/19 21:16:59 - 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...
我们使用电脑的过程中有时会遇到这种情况,当我们打开电脑之后,发现一直停留在一个界面:“配置Windows Update失败,还原更改请勿关闭计算机”,等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢࿰…...
2022/11/19 21:16:58 - 如何在iPhone上关闭“请勿打扰”
Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...
2022/11/19 21:16:57