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

常用Java API

1 字符串处理

1.1 String 类

String 类是 Java 中不可变的字符序列。它提供了以下常用方法:

  • length():返回字符串的长度。

  • charAt(index):返回指定索引处的字符。

  • substring(startIndex, endIndex):返回从 startIndex 到 endIndex-1 处的子字符串。

  • indexOf(char):返回字符在字符串中首次出现的索引,如果没有找到则返回 -1。

示例代码:

String str = "Hello World";// 获取字符串长度
int length = str.length();// 获取指定索引处的字符
char ch = str.charAt(0);// 获取子字符串
String substring = str.substring(0, 5);// 查找字符在字符串中首次出现的索引
int index = str.indexOf('o');

1.2 StringBuilder 类

StringBuilder 类是一个可变的字符序列,用于高效地构造和修改字符串。它提供了以下常用方法:

  • append(string):将字符串追加到 StringBuilder 的末尾。

  • insert(index, string):在指定索引处插入字符串。

  • reverse():反转 StringBuilder 中的字符顺序。

示例代码:

StringBuilder sb = new StringBuilder();// 追加字符串
sb.append("Hello ");
sb.append("World");// 插入字符串
sb.insert(5, "Java ");// 反转字符串
sb.reverse();

2 集合框架

2.1 List 接口

List 接口表示一个有序的元素集合。它提供了以下常见的实现:

  • ArrayList:基于数组实现,支持元素的随机访问和动态增长。

  • LinkedList:基于链表实现,支持高效的插入和删除操作。

示例代码(ArrayList):

List<String> list = new ArrayList<>();// 添加元素
list.add("Hello");
list.add("World");// 获取元素
String element = list.get(0);// 移除元素
list.remove(1);

示例代码(LinkedList):

List<String> list = new LinkedList<>();// 添加元素
list.add("Hello");
list.add("World");// 获取元素
String element = list.getFirst();// 移除元素
list.removeFirst();

2.2 Set 接口

Set 接口表示一个不包含重复元素的集合。它提供了以下常见的实现:

  • HashSet:基于哈希表实现,不允许重复元素。

  • TreeSet:基于红黑树实现,元素按自然顺序排序。

示例代码(HashSet):

Set<String> set = new HashSet<>();// 添加元素
set.add("Hello");
set.add("World");// 检查元素是否存在
boolean contains = set.contains("Hello");// 移除元素
set.remove("World");

示例代码(TreeSet):

Set<String> set = new TreeSet<>();// 添加元素
set.add("Hello");
set.add("World");// 获取第一个元素
String first = set.first();// 移除第一个元素
set.remove(first);

2.3 Map 接口

Map 接口表示一个键值对集合。它提供了以下常见的实现:

  • HashMap:基于哈希表实现,键值对之间的映射不保证顺序。

  • TreeMap:基于红黑树实现,键值对按键的自然顺序排序。

示例代码(HashMap):

Map<String, Integer> map = new HashMap<>();// 添加键值对
map.put("Hello", 1);
map.put("World", 2);// 获取值
int value = map.get("Hello");// 移除键值对
map.remove("World");

示例代码(TreeMap):

Map<String, Integer> map = new TreeMap<>();// 添加键值对
map.put("Hello", 1);
map.put("World", 2);// 获取第一个键
String firstKey = map.firstKey();// 移除第一个键值对
map.remove(firstKey);

2.4 遍历方式

1). 使用迭代器(Iterator)

// 创建一个 ArrayList
List<String> list = new ArrayList<>();
list.add("Hello");
list.add("World");
list.add("Java");// 使用迭代器遍历 ArrayList
Iterator<String> iterator = list.iterator();
while (iterator.hasNext()) {String element = iterator.next();System.out.println(element);
}

2). 使用增强 for 循环

// 创建一个 HashSet
Set<String> set = new HashSet<>();
set.add("Hello");
set.add("World");
set.add("Java");// 使用增强 for 循环遍历 HashSet
for (String element : set) {System.out.println(element);
}

3). 使用流(Stream)

// 创建一个 HashMap
Map<String, Integer> map = new HashMap<>();
map.put("Hello", 1);
map.put("World", 2);
map.put("Java", 3);// 使用流遍历 HashMap
map.keySet().stream().forEach(key -> System.out.println(key + ": " + map.get(key)));

4). 使用 lambda 表达式

// 创建一个 ArrayList
List<String> list = new ArrayList<>();
list.add("Hello");
list.add("World");
list.add("Java");// 使用 lambda 表达式遍历 ArrayList
list.forEach(element -> System.out.println(element));

5). 使用并行流(Parallel Stream)

// 创建一个 ArrayList
List<String> list = new ArrayList<>();
list.add("Hello");
list.add("World");
list.add("Java");// 使用并行流遍历 ArrayList
list.parallelStream().forEach(element -> System.out.println(element));

2.5 区别

  • 数据结构: ArrayList 使用数组,LinkedList 使用链表,HashSet 使用哈希表。

  • 元素顺序: ArrayList 和 LinkedList 保持插入顺序,而 HashSet 无序。

  • 是否允许重复: ArrayList 和 LinkedList 允许重复元素,而 HashSet 不允许。

  • 时间复杂度: ArrayList 和 HashSet 的查找、插入和删除操作的平均时间复杂度为 O(1),而 LinkedList 的查找操作为 O(n),插入和删除操作为 O(1)。

  • 线程安全性: ArrayList、LinkedList 和 HashSet 都是非线程安全的。

3 Java文件操作

3.1 读取文件

要读取文件,可以使用 FileReader 和 BufferedReader 类:

FileReader fr = new FileReader("file.txt");
BufferedReader br = new BufferedReader(fr);
String line;
while ((line = br.readLine()) != null) {// 处理每一行
}
br.close();
fr.close();

3.2 写入文件

要写入文件,可以使用 FileWriter 和 BufferedWriter 类:

FileWriter fw = new FileWriter("file.txt");
BufferedWriter bw = new BufferedWriter(fw);
bw.write("内容");
bw.close();
fw.close();

结语:以上就是关于Java的常用API的学习,也是学习Java基础必须要掌握的,非常之重要,感谢各位看官的观看,谢谢,下期见! 

相关文章:

常用Java API

1 字符串处理 1.1 String 类 String 类是 Java 中不可变的字符序列。它提供了以下常用方法&#xff1a; length()&#xff1a;返回字符串的长度。 charAt(index)&#xff1a;返回指定索引处的字符。 substring(startIndex, endIndex)&#xff1a;返回从 startIndex 到 endI…...

使用opencv优化图片(画面变清晰)

文章目录 需求影响照片清晰度的因素 实现降噪测试代码 锐化空间锐化Unsharp Masking频率域锐化对比测试 对比度增强常用算法对比测试 需求 对图像进行优化&#xff0c;使其看起来更清晰&#xff0c;同时保持尺寸不变&#xff0c;通常涉及到图像处理技术如锐化、降噪、对比度增强…...

Java 回顾方法的定义

一、方法的定义 1&#xff0e;修饰符&#xff08;public static…&#xff09;详见博客【Java 方法的定义】 2&#xff0e;返回值&#xff08;int, double, char[],…., void&#xff09;详见博客【Java 方法的定义】 3. break&#xff1a;跳出switch 结束循环&#xff0c;详…...

网络安全产品认证证书大全(持续更新...)

文章目录 一、引言二、《计算机信息系统安全专用产品销售许可证》2.1 背景2.2 法律法规依据2.3 检测机构2.4 检测依据2.5 认证流程2.6 证书样本 三、《网络关键设备和网络安全专用产品安全认证证书》3.1 背景3.2 法律法规依据3.3 检测机构3.4安全认证和安全检测依据标准3.5 认证…...

win10 安装多个版本的python

1&#xff0c;安装python3.9 和python3.10 2, 安装完之后分别打开两个版本的Python的安装目录&#xff08;第一层目录&#xff09;&#xff0c;把pythonw.exe分别重命名为pythonw_39.exe和pythonw_310.exe&#xff0c;把python.exe复制一份&#xff0c;并分别重命名为python_…...

【ORACLE】数据备份

Oracle数据库备份是确保数据安全和可靠性的重要环节。Oracle提供了多种备份方法&#xff0c;包括冷备份、热备份、逻辑备份&#xff08;如使用expdp和impdp&#xff09;以及使用RMAN&#xff08;Recovery Manager&#xff09;进行物理备份。 冷备份&#xff1a;在数据库关闭的状…...

[Golang] goroutine

[Golang] goroutine 文章目录 [Golang] goroutine并发进程和线程协程 goroutine概述如何使用goroutine 并发 进程和线程 谈到并发&#xff0c;大多都离不开进程和线程&#xff0c;什么是进程、什么是线程&#xff1f; 进程可以这样理解&#xff1a;进程就是运行着的程序&…...

【前端】JavaScript高级教程:函数高级——执行上下文与执行上下文栈

文章目录 遍历提升与函数提升执行上下文执行上下文栈(1)执行上下文栈(2)面试题 遍历提升与函数提升 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>01_变量提升与函数提升</title> </head&…...

【阻抗管传递函数法】频域声压,即复声压是指什么

在阻抗管传递函数法中提到的“频域声压数据”&#xff0c;是通过对传声器测得的“时域声压信号”进行快速傅里叶变换&#xff08;FFT&#xff09;后得到的结果。 具体来说&#xff0c;这些频域声压数据指的是传声器测量的声压随时间变化的数据&#xff0c;经过傅里叶变换后&am…...

Python青少年简明教程:类和对象入门

Python青少年简明教程&#xff1a;类和对象入门 Python支持多种编程范式&#xff08;programming paradigms&#xff09;&#xff0c;即支持多种不同的编程风格和方法。初学者开始重点学习关注的编程范式&#xff0c;一般而言是面向过程编程和面向对象编程。面向过程编程&#…...

【vue+el-table】表格操作列宽度跟随按钮个数自适应, 方法封装全局使用

效果图 以上图片分别代表不同用户权限下所能看到的按钮个数, 操作列宽度也会自适应宽度, 就不会一直处于最大宽度, 导致其他权限用户看到的页面出现大量留白问题. 目录 解决方法解决过程中可能出现的问题width赋值时为什么不放update()中btnDom为什么不能直接调用forEach为…...

OpenAI发布全新o1 AI模型具备推理能力

&#x1f989; AI新闻 &#x1f680; OpenAI发布全新o1 AI模型具备推理能力 摘要&#xff1a;OpenAI推出新AI模型o1&#xff0c;具备推理能力&#xff0c;旨在比人类更快地解决复杂问题。o1与o1-mini版本同时发布&#xff0c;前者训练成本较高&#xff0c;但在编程和多步骤问…...

如何在本地部署大语言模型

近年来&#xff0c;随着大语言模型&#xff08;如GPT、BERT等&#xff09;的迅速发展&#xff0c;越来越多的开发者和研究人员希望在本地环境中部署这些强大的模型&#xff0c;以便用于特定的应用场景或进行个性化的研究。本文将详细介绍如何在本地部署大语言模型&#xff0c;涵…...

秒懂:环境变量

前言 1.Linux当中70%以上的命令程序都是用C语言写的 2.执行命令程序和运行自己写的程序没有任何区别 3.自己程序运行必须要带路径&#xff08;绝对/相对都可&#xff09; 4. 系统指令可带可不带&#xff08;带不要瞎带&#xff09; 变量具有全局特性是…...

使用 @Param 注解标注映射关系

目录 1. 场景描述 2. SQL语句 3. 方法定义 4. Param注解的使用 5. 总结 在开发过程中&#xff0c;我们经常需要在Java应用程序中执行数据库操作&#xff0c;尤其是更新操作。在Spring Data JPA框架中&#xff0c;我们可以使用原生SQL语句来执行这些操作&#xff0c;并通过…...

Java学习中在打印对象时忘记调用 .toString() 方法或者没有重写 toString() 方法怎么办?

在 Java 编程中&#xff0c;toString() 方法对于调试、日志记录以及打印对象信息至关重要。然而&#xff0c;许多初学者在打印对象时可能会忘记调用 .toString() 方法&#xff0c;或者在自定义类中没有重写 toString() 方法&#xff0c;这可能导致输出结果不符合预期。 一、Ja…...

如何评估一个RAG(检索增强生成)系统-上篇

最近项目中需要评估业务部门搭建的RAG助手的效果好坏&#xff0c;看了一下目前业界一些评测的方法。目前分为两大类&#xff0c;基于传统的规则、机器学习的评测方法&#xff0c;基于大模型的评测方法。在这里做一些记录&#xff0c;上篇主要做评测方法的记录&#xff0c;下篇会…...

rust解说

Rust 是一种开源的系统编程语言&#xff0c;由 Mozilla 研究院开发&#xff0c;旨在提供高性能、内存安全且并发性良好的编程体验。 Rust 于 2010 年由 Graydon Hoare 开始设计&#xff0c;并在 2015 年发布了第一个稳定版本。 Rust 的设计目标是解决 C 等传统系统编程语言在…...

Elasticsearch 开放 inference API 为 Hugging Face 添加了原生分块支持

作者&#xff1a;来自 Elastic Max Hniebergall 借助 Elasticsearch 开放推理 API&#xff0c;你可以使用 Hugging Face 的推理端点&#xff08;Inference Endpoints&#xff09;在 Elasticsearch 之外执行推理。这样你就可以使用 Hugging Face 的可扩展基础架构&#xff0c;包…...

Jenkins部署若依项目

一、配置环境 机器 jenkins机器 用途&#xff1a;自动化部署前端后端&#xff0c;前后端自动化构建需要配置发送SSH的秘钥和公钥&#xff0c;同时jenkins要有nodejs工具来进行前端打包&#xff0c;maven工具进行后端的打包。 gitlab机器 用途&#xff1a;远程代码仓库拉取和…...

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…...

day52 ResNet18 CBAM

在深度学习的旅程中&#xff0c;我们不断探索如何提升模型的性能。今天&#xff0c;我将分享我在 ResNet18 模型中插入 CBAM&#xff08;Convolutional Block Attention Module&#xff09;模块&#xff0c;并采用分阶段微调策略的实践过程。通过这个过程&#xff0c;我不仅提升…...

以下是对华为 HarmonyOS NETX 5属性动画(ArkTS)文档的结构化整理,通过层级标题、表格和代码块提升可读性:

一、属性动画概述NETX 作用&#xff1a;实现组件通用属性的渐变过渡效果&#xff0c;提升用户体验。支持属性&#xff1a;width、height、backgroundColor、opacity、scale、rotate、translate等。注意事项&#xff1a; 布局类属性&#xff08;如宽高&#xff09;变化时&#…...

智慧工地云平台源码,基于微服务架构+Java+Spring Cloud +UniApp +MySql

智慧工地管理云平台系统&#xff0c;智慧工地全套源码&#xff0c;java版智慧工地源码&#xff0c;支持PC端、大屏端、移动端。 智慧工地聚焦建筑行业的市场需求&#xff0c;提供“平台网络终端”的整体解决方案&#xff0c;提供劳务管理、视频管理、智能监测、绿色施工、安全管…...

MongoDB学习和应用(高效的非关系型数据库)

一丶 MongoDB简介 对于社交类软件的功能&#xff0c;我们需要对它的功能特点进行分析&#xff1a; 数据量会随着用户数增大而增大读多写少价值较低非好友看不到其动态信息地理位置的查询… 针对以上特点进行分析各大存储工具&#xff1a; mysql&#xff1a;关系型数据库&am…...

(二)TensorRT-LLM | 模型导出(v0.20.0rc3)

0. 概述 上一节 对安装和使用有个基本介绍。根据这个 issue 的描述&#xff0c;后续 TensorRT-LLM 团队可能更专注于更新和维护 pytorch backend。但 tensorrt backend 作为先前一直开发的工作&#xff0c;其中包含了大量可以学习的地方。本文主要看看它导出模型的部分&#x…...

CMake基础:构建流程详解

目录 1.CMake构建过程的基本流程 2.CMake构建的具体步骤 2.1.创建构建目录 2.2.使用 CMake 生成构建文件 2.3.编译和构建 2.4.清理构建文件 2.5.重新配置和构建 3.跨平台构建示例 4.工具链与交叉编译 5.CMake构建后的项目结构解析 5.1.CMake构建后的目录结构 5.2.构…...

为什么需要建设工程项目管理?工程项目管理有哪些亮点功能?

在建筑行业&#xff0c;项目管理的重要性不言而喻。随着工程规模的扩大、技术复杂度的提升&#xff0c;传统的管理模式已经难以满足现代工程的需求。过去&#xff0c;许多企业依赖手工记录、口头沟通和分散的信息管理&#xff0c;导致效率低下、成本失控、风险频发。例如&#…...

土地利用/土地覆盖遥感解译与基于CLUE模型未来变化情景预测;从基础到高级,涵盖ArcGIS数据处理、ENVI遥感解译与CLUE模型情景模拟等

&#x1f50d; 土地利用/土地覆盖数据是生态、环境和气象等诸多领域模型的关键输入参数。通过遥感影像解译技术&#xff0c;可以精准获取历史或当前任何一个区域的土地利用/土地覆盖情况。这些数据不仅能够用于评估区域生态环境的变化趋势&#xff0c;还能有效评价重大生态工程…...

【Elasticsearch】Elasticsearch 在大数据生态圈的地位 实践经验

Elasticsearch 在大数据生态圈的地位 & 实践经验 1.Elasticsearch 的优势1.1 Elasticsearch 解决的核心问题1.1.1 传统方案的短板1.1.2 Elasticsearch 的解决方案 1.2 与大数据组件的对比优势1.3 关键优势技术支撑1.4 Elasticsearch 的竞品1.4.1 全文搜索领域1.4.2 日志分析…...