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

Java中的不可变集合、Stream流以及异常处理的

目录

1. 不可变集合

如何创建不可变集合

2. Stream流

Stream基本操作

3. 异常处理

异常的分类

异常处理机制


1. 不可变集合

在Java中,不可变集合指的是一旦创建后内容不可更改的集合。这种集合的好处在于它们可以安全地被多个线程访问而无需同步,因为数据本身无法修改,从而大大减少了出错的可能性。

如何创建不可变集合

Java 9 引入了更简便的方法来创建不可变集合,例如List.of()Set.of()Map.ofEntries()。这些方法提供了一种快速创建不可变集合的方式:

  • List 示例

  • List<String> immutableList = List.of("Apple", "Banana", "Cherry");
    System.out.println(immutableList);
    

    Set 示例

  • Set<String> immutableSet = Set.of("Apple", "Banana", "Cherry");
    System.out.println(immutableSet);
    

    Map 示例

  • Map<String, Integer> immutableMap = Map.of("Apple", 1, "Banana", 2, "Cherry", 3);
    System.out.println(immutableMap);
    

    尝试修改这些集合会抛出UnsupportedOperationException

    2. Stream流

    Stream API 是Java 8 中引入的一个高阶库,用于简化集合操作,支持顺序与并行处理。

    Stream基本操作

    Stream流操作包括中间操作和终端操作,中间操作如filtermap,终端操作如collectforEach

List<String> names = Arrays.asList("John", "Jane", "Adam", "Tom");
List<String> filteredNames = names.stream().filter(name -> name.startsWith("J")).collect(Collectors.toList());
System.out.println(filteredNames);

3. 异常处理

在Java中,异常处理是对程序运行中出现的异常情况进行管理和响应的过程。理解异常类型和如何处理它们对于构建稳健的应用至关重要。

异常的分类
  • 运行时异常:这类异常在编译时不会被检查(unchecked),如NullPointerException
  • 受检异常:这类异常必须在编译时被捕获或声明抛出(checked),如IOException
异常处理机制
  • try-catch:捕获并处理异常。

    try {int result = 1 / 0;
    } catch (ArithmeticException e) {System.out.println("除数不能为零");
    }
    

try-catch-finally:无论是否发生异常,finally块总会被执行。

try {// 可能会抛出异常的代码
} catch (Exception e) {// 异常处理
} finally {// 清理代码
}

throws 关键字:在方法签名中声明异常,表示当前方法不处理异常,而是提醒调用者处理。

public void readFile() throws IOException {// 可能抛出 IOException 的代码
}

http://www.lryc.cn/news/417530.html

相关文章:

  • LeetCode面试题Day1|LeetCode26 删除有序数组中的重复项、LeetCode80 删除有序数组中的重复项Ⅱ
  • 细说文件操作
  • Vue3从零开始——掌握setup、ref和reactive函数的奥秘
  • C语言练习--屏幕上打印九九乘法表
  • 将tsx引入vue
  • 前端实现签字效果+合同展示
  • [AI Embedchain] 开始使用 - 快速开始
  • Linux网络协议.之 tcp,udp,socket网络编程(三).之多进程实现并发demon
  • Java线程(练习题)
  • MySQL:初识数据库初识SQL建库
  • 关于Redis的集群面试题
  • 带头双向循环链表(一)
  • 深入理解Win32K.sys的工作原理
  • 力扣面试经典算法150题:删除有序数组中的重复项
  • 文本加密工具类-支持MD5、SHA1、SHA256、SHA224、SHA512、SHA384、SHA3、RIPMD160算法
  • LVS集群中的负载均衡技术
  • Java网络编程——HTTP协议原理
  • java之多线程篇
  • 【深度学习】TTS,CosyVoice,训练脚本解析
  • 《Unity3D网络游戏实战》学习与实践
  • Machine_Matrix打靶渗透【附代码】(权限提升)
  • 代码随想录算法训练营Day22 | Leetcode 77 组合 Leetcode 216 组合总和Ⅲ Leetcode17 电话号码的字母组合
  • 【微信小程序实战教程】之微信小程序中的 JavaScript
  • K-近邻算法(一)
  • 从零开始之AI视频制作篇
  • Java之TCP编程综合案例
  • 【数据分析---Pandas实战指南:精通数据查询、增删改操作与高效索引和列名操作管理】
  • Spring Cloud全解析:注册中心之Eureka服务获取和服务续约
  • 三相整流电路交流侧谐波仿真分析及计算
  • 了解Java中的反射,带你如何使用反射