4月9号总结

java学习

一.steam流

1.介绍

Stream 是 Java 8 中引入的一种处理集合数据的新抽象。它提供了一种高效且便利的方式来处理集合中的元素,支持函数式编程的特性,使得集合操作变得更加简洁和灵活。

2.创建

List和Set可以直接调用接口的steam方法转换为流

复制代码
  List<String> s1= new ArrayList<>();
        s1.stream();

 Set<String> s=new HashSet<>();
        s.stream();

注意:map不能直接创建stream流,可以使用Map接口的keySet().stream()方法将Map的键集合转换为流,或使用values().stream()方法将Map的值集合转换为流。

复制代码
Stream<String> keyStream = map.keySet().stream();
Stream<Integer> valueStream = map.values().stream();
3.forerch(遍历)

在前面没有加限定操作的时候foreach可以遍历输出集合内的全部元素。

复制代码
public class test {
    public static void main(String[] args) {
        List<String> s1=new ArrayList<>();
        Collections.addAll(s1,"张三","李四","王五","猪八戒","孙悟空");
        s1.stream().forEach(System.out::println);

    }
}
4.filter(筛选)

fiter可以对我们流进行筛选,筛除不符合我们要求的元素,用上面的例子。

如果我们只需要保留名字长度为2的元素。

那么我们只需要保证元素.length()==2就行。

复制代码
List<String> s1=new ArrayList<>();
        Collections.addAll(s1,"张三","李四","王五","猪八戒","孙悟空");
        s1.stream().filter(s->s.length()==2).forEach(System.out::println);

我们还可以多次筛选,可以用多个filter或者用&&加多个条件。

复制代码
        List<String> s1=new ArrayList<>();
        Collections.addAll(s1,"张三","李四","王五","猪八戒","孙悟空");
        s1.stream().filter(s->s.length()==2&&s.startsWith("张") ).forEach(System.out::println);

    

        List<String> s1=new ArrayList<>();
        Collections.addAll(s1,"张三","李四","王五","猪八戒","孙悟空");
        s1.stream().filter(s->s.length()==2).filter(s->s.startsWith("张")).forEach(System.out::println);
5.sorted(流排序)

sorted可以将流按照从小到大排序。

复制代码
 List<String> s1=new ArrayList<>();
        Collections.addAll(s1,"cba","acb","bac","abc","cab");
        s1.stream().sorted().forEach(System.out::println);

这里先介绍部分,还有很多很方便的没有介绍。

二.蓝桥杯真题练习

1.接龙数列

样例输入

复制代码
5
11 121 22 12 2023

样例输出

复制代码
1

一道dp题,不看题解都想不到是dp题

复制代码
#include<iostream>
#define ll long long
using namespace std;
int main()
{
	ll n;
	cin>>n;
	ll dp[11]={0},ans=-1;//最长序列 
	for(int i=0;i<n;i++){
		string a;
		cin>>a;
		ll b=a.back()-'0',c=a[0]-'0';
		dp[b]=max(dp[b],dp[c]+1);
		ans=max(ans,dp[b]);
	}
	cout<<n-ans<<endl;//这里输出需要删除的个数 
	return 0;
}
2.冶炼金属

样例输入

复制代码
3
75 3
53 2
59 2

样例输出

复制代码
20 25

这里需要数学手算一下。

复制代码
#include<iostream>
#include<algorithm>

using namespace std;

int main() {
    int n;
    cin >> n;
    int mi = 0, mx = 1e9;
    while (n--) {
        int a, b;
        cin >> a >> b;
        mi = max(a / (b + 1) + 1, mi);
        mx = min(a / b, mx);
    }
    cout << mi << " " << mx << endl;
    return 0;
}
相关推荐
AI你一生一世4 小时前
不止于时序存储:DolphinDB 如何成为 AI 时代的工业智能底座
java·人工智能·struts·时序数据库·工业智能·dolphindb·ai基础设施
布莱克6054 小时前
C/C++ 中变量的声明与定义:区别、联系与常见误区
c语言·开发语言·c++·声明·定义
云-缩影4 小时前
拆解 AI 图像生成应用的后端架构:ECS、OSS 和大模型 API 怎么配合
java·spring boot·后端
LabVIEW开发5 小时前
LabVIEW 局部变量为何引发竞争条件?四种同步机制
开发语言·labview
瑞克-桑切斯5 小时前
7、MySQL 慢查询排查与优化实战指南
java·服务器·数据库
benchmark_cc5 小时前
A 股、港股、美股如何建立统一的标的主数据格式?
开发语言·python·数据分析·pandas·量化交易·股票数据·quantdash
前进的李工6 小时前
Agent 学习笔记 05:系统提示词应该怎么写
笔记·学习·prompt·agent·个人开发·few-shot·ai应用开发
Zenova EdgeOS6 小时前
Go 工业边缘错误处理实战:用 errors 构建可追溯错误链
开发语言·数据库·golang
取名真是7 小时前
Python 算法知识点从基础到进阶
开发语言·python·算法
FRing037 小时前
vue2干货总结3(computed计算属性、watch监听器)
开发语言·前端·vue.js·vue2