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

Java常用API

一、集合框架(Collection API)

1. 核心接口及实现类

接口/类说明常用方法
List<E>有序、可重复集合add()get()remove()size()
ArrayList<E>基于数组实现,查询快List
LinkedList<E>基于链表实现,增删快addFirst()removeLast()
Map<K,V>键值对存储,键唯一put(k, v)get(k)keySet()containsKey()
HashMap<K,V>哈希表实现,无序Map
LinkedHashMap<K,V>保留插入顺序Map
Set<E>元素唯一,无序集合add()contains()remove()
HashSet<E>基于HashMap实现Set
Queue<E>队列(FIFO)offer()poll()peek()

2. 工具类

  • Collections:
     

    <JAVA>

    Collections.sort(list);                      // 排序
    Collections.reverse(list);                   // 反转
    List<Integer> synList = Collections.synchronizedList(list); // 线程安全
    
  • Arrays:
     

    <JAVA>

    Arrays.sort(arr);                            // 数组排序
    List<String> list = Arrays.asList("A", "B"); // 数组转List(只读)
    

二、IO/NIO

1. 基础IO类

用途
File文件或目录的抽象表示
FileInputStream字节输入流(读取文件)
FileOutputStream字节输出流(写入文件)
BufferedReader缓冲字符输入流(高效读取文本)
BufferedWriter缓冲字符输出流(高效写入文本)

示例:读取文本文件

 

<JAVA>

try (BufferedReader br = new BufferedReader(new FileReader("file.txt"))) {String line;while ((line = br.readLine()) != null) {System.out.println(line);}
} // try-with-resources自动关闭流

2. NIO(Java 7+)

  • Path 和 Paths: 代替File操作文件路径
     

    <JAVA>

    Path path = Paths.get("data", "test.txt"); // 获取路径
    
  • Files: 文件操作工具类
     

    <JAVA>

    byte[] data = Files.readAllBytes(path);    // 读取文件所有字节
    Files.write(path, content.getBytes());     // 写入文件
    List<String> lines = Files.readAllLines(path, StandardCharsets.UTF_8); // 读取所有行
    

三、多线程

1. 线程管理

  • Thread

     

    <JAVA>

    Thread thread = new Thread(() -> System.out.println("子线程执行"));
    thread.start();  // 启动线程
    thread.join();   // 等待线程结束
    
  • ExecutorService线程池

     

    <JAVA>

    ExecutorService pool = Executors.newFixedThreadPool(4);  // 创建线程池
    pool.submit(() -> { /* 任务逻辑 */ });                    // 提交任务
    pool.shutdown();                                         // 关闭线程池
    

2. 线程安全工具

  • ConcurrentHashMap:高并发Map
  • CopyOnWriteArrayList:写时复制的线程安全List
  • AtomicInteger:原子操作类
     

    <JAVA>

    AtomicInteger count = new AtomicInteger(0);
    count.incrementAndGet();  // 原子自增
    

四、日期时间(Java 8+)

说明示例
LocalDate日期(年-月-日)LocalDate.now() ➔ 2023-10-01
LocalTime时间(时分秒)LocalTime.of(14, 30) ➔ 14:30
LocalDateTime日期 + 时间LocalDateTime.parse("2023-10-01T14:30:00")
DateTimeFormatter日期格式化DateTimeFormatter.ofPattern("yyyy/MM/dd")
Duration时间间隔(秒/毫秒)Duration.between(startTime, endTime)

五、工具类

1. Objects

  • 判空与比较
     

    <JAVA>

    if (Objects.isNull(obj)) { ... }               // 判空
    if (Objects.equals(str1, str2)) { ... }        // 安全比较
    

2. Optional(Java 8+)

  • 避免空指针
     

    <JAVA>

    Optional<String> opt = Optional.ofNullable(str);
    opt.ifPresent(s -> System.out.println(s));    // 值存在时执行
    String result = opt.orElse("default");        // 安全取值
    

3. String 基础API

  • 常用方法
     

    <JAVA>

    str.length();                     // 字符串长度
    str.substring(0, 3);              // 截取子串
    str.split(",");                   // 拆分字符串
    str.contains("Java");             // 是否包含子串
    String.join("-", "A", "B", "C");  // 拼接字符串 ➔ "A-B-C"
    

六、其他高频API

  • 反射

     

    <JAVA>

    Class<?> clazz = Class.forName("com.example.MyClass");   // 获取Class对象
    Method method = clazz.getMethod("methodName");           // 获取方法
    Object instance = clazz.newInstance();                   // 创建实例
    method.invoke(instance);                                 // 调用方法
    
  • 正则表达式

     

    <JAVA>

    Pattern pattern = Pattern.compile("\\d+");           // 匹配数字
    Matcher matcher = pattern.matcher("abc123");
    if (matcher.find()) {System.out.println(matcher.group());             // 输出"123"
    }
    

总结

  • 集合框架:优先选用ArrayListHashMap,注意线程安全问题。
  • IO/NIO:掌握Files工具类,推荐try-with-resources管理流。
  • 多线程:使用线程池(ExecutorService)代替直接创建Thread
  • 日期时间弃用DateCalendar,改用Java 8新API。
  • 工具类:善用Optional处理空值,简化代码逻辑。
http://www.xdnf.cn/news/9042.html

相关文章:

  • React从基础入门到高级实战:React 核心技术 - React 状态管理:Context 与 Redux
  • uniapp-商城-71-shop(4-商品列表,详情页中添加商品到购物车的处理)
  • 机器人工具中心点标定
  • 【Linux】网络--传输层--TCP协议基础
  • 深入浅出对抗学习:概念、攻击、防御与代码实践
  • Ansible常用模块
  • c++算法题
  • 【QT】对话框dialog类封装
  • Unity UGUI 中 InputField 组件处理拖拽超出文本框边界时自动滚动内容的核心协程
  • java虚拟机2
  • 高速通信时代的信号编码利器-PAM4技术解析
  • HTML 文件路径完全指南:相对路径、绝对路径解析与引用技巧
  • git基础语法回顾
  • 重构损失(Reconstruction Loss) L mse​ 和 余弦相似性损失(Cosine Similarity Loss) L cos​
  • AI天气预报进入“大模型时代“:如何用Transformer重构地球大气模拟?
  • 基于cornerstone3D的dicom影像浏览器 第二十三章 mpr预设窗值与vr preset
  • 鸿蒙OSUniApp 开发的图文混排展示组件#三方框架 #Uniapp
  • 3d tiles高级样式设计与条件渲染
  • 基于小米Open-Vela开源系统的高级计算器实现 | 支持C++数学函数与 LVGL UI
  • 2025.05.09【Bubblemap】气泡图深入解析
  • 回调函数的使用
  • 鸿蒙OSUniApp 实现的一键清除输入框内容功能#三方框架 #Uniapp
  • Git切换历史版本及Gitee云绑定
  • 横向联邦学习、纵向联邦学习与联邦迁移学习是联邦学习的三大主要分支
  • 企微客服如何接入ai大模型
  • [网页五子棋]项目介绍以及websocket的消息推送(轮询操作)、报文格式和握手过程(建立连接过程)
  • Vue3 + Element Plus 实现用户管理模块
  • 计算机网络学习(八)——MAC
  • 3560. 木材运输的最小成本
  • 时序模型上——ARIMA/MA/AR