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

小白借助ai对全栈进行浅浅理解(学习笔记)-Lambda、Optional 避免空指针与新的日期时间 API

学习顺序:Java 基础 → Spring Boot → Vue → 前后端整合 → 数据库 → 部署 → 进阶实战。

 Lambda 表达式(Lambda 表达式是 Java 8 引入的核心特性,旨在简化函数式编程,替代冗长的匿名内部类,使代码更简洁、灵活 

Lambda 必须与函数式接口(Functional Interface) 配合使用,即接口中仅有一个抽象方法。

@FunctionalInterface//自定义函数接口interface Calculator {int operate(int a, int b);}// 使用 Lambda 实现加法Calculator add = (a, b) -> a + b;System.out.println(add.operate(3, 5)); // 输出 8

// 静态方法引用
Function<Double, Double> sqrt = Math::sqrt;
// 实例方法引用
List<String> names = Arrays.asList("Alice", "Bob");
names.forEach(System.out::println); // 等效于 s -> System.out.println(s)
// 构造器引用
Supplier<List<String>> listSupplier = ArrayList::new;

List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
// 过滤偶数,平方后求和
int sum = numbers.stream().filter(n -> n % 2 == 0)    // Predicate.map(n -> n * n)            // Function.reduce(0, Integer::sum);   // BinaryOperator
System.out.println(sum); // 输出 20 (2² + 4² = 4 + 16)

// 显式类型
Comparator<Integer> cmp = (Integer a, Integer b) -> a.compareTo(b);
// 隐式类型(推荐)
Comparator<Integer> cmp = (a, b) -> a.compareTo(b);

@FunctionalInterface
interface FileProcessor {void process() throws IOException; // 声明异常
}
FileProcessor processor = () -> Files.readAllBytes(Paths.get("file.txt"));

错误堆栈中直接显示processString,明确指出问题发生在processString方法中,方便快速定位

集合排序中,a.length()-b.length()[从小到大]    b.length()-a.length()[从大到小]

Optional 避免空指针、新的日期时间 API

链式处理就是.map().filter();

http://www.dtcms.com/a/178912.html

相关文章:

  • 南邮计科电工电子实验第五次课与非门设计数字锁逻辑电路小测答案
  • 线程池的核心参数和线程创建方式,线程和进程
  • 介绍Unity中的Dictionary
  • 【RAG技术全景解读】从原理到工业级应用实践
  • 树莓派5+Ubuntu24.04 LTS串口通信 保姆级教程
  • Mockoon 使用教程
  • 解决:‘java‘ 不是内部或外部命令,也不是可运行的程序-Java环境变量配置(含JDK8、JDK21安装包一站式配置)
  • 垃圾厌氧堆肥发酵实验台试验装置
  • 直接用字符串方式 split(“。“) 来切句,虽然能把句子拆开,但无法和 BERT 模型的 token 位置对应(embedding 用不上)
  • 两种方法求解最长公共子序列问题并输出所有解
  • Android学习总结之算法篇八(二叉树和数组)
  • 可视化图解算法35:在二叉树中找到两个节点的最近公共祖先(二叉树的最近公共祖先)
  • 【LeetCode】删除排序数组中的重复项 II
  • 2025年渗透测试面试题总结-某步在线面试(题目+回答)
  • 开启智能Kubernetes管理新时代:kubectl-ai让操作更简单!
  • ZooKeeper工作机制与应用场景
  • 邻近标记技术:研究蛋白互作的利器(五)
  • base64与图片的转换和预览(高阶玩法)
  • 守护数字家园:个人博客安全防护指南
  • 云服务如何简化物联网设备生命周期(How Cloud Services Simplify IoT Device Lifecycles)?
  • 【Linux修炼手册】Linux开发工具的使用(一):yum与vim
  • 数据清洗(ETL/ELT)原理与工具选择指南:企业数字化转型的核心引擎
  • DevExpressWinForms-布局之SplitContainerControl
  • 基于CNN与SHAP可解释性分析的神经网络回归预测模型【MATLAB】
  • Python爬虫(21)Python爬虫进阶:Selenium自动化处理动态页面实战解析
  • 基于SpringBoot的校园周边美食探索及分享平台的设计与实现
  • C++函数传值与传引用对比分析
  • 笔试强训——第七周
  • 《面向对象》
  • C29-二维数组应用之找最大值及对应下标