目录

1.Java LinkedList 的高级应用与示例

1.1 LinkedList的基本使用

基本操作示例

1.2 LinkedList独有的方法

特定方法示例

1.3 队列模式(先进先出)

队列模式示例

1.4 栈模式(先进后出)

栈模式示例

总结

2.Java Vector 类的使用和特性

2.1 Vector的使用

基本操作示例

2.2 Vector的发展历史

旧方法示例

总结

3.Java 中 Stack 和 HashSet 的使用及特性

3.1Stack 的使用

示例代码

3.2 HashSet 的使用

3.2.1 HashSet的基本使用

示例代码

3.2.2 HashSet的特点

示例代码

总结


1.Java LinkedList 的高级应用与示例

1.1 LinkedList的基本使用

  • 目的:深入了解 LinkedList 类的基本用法。

  • 特点LinkedList 是一个双向链表,提供了多种方法来操作列表元素。

基本操作示例
LinkedList<String> list = new LinkedList<>();
list.add("小希"); // 添加元素
list.add(5, "小翔"); // 添加元素到指定位置
list.set(2, "小君"); // 设置指定位置的元素
String string = list.get(2); // 获取指定位置的元素
int size = list.size(); // 获取集合大小
 

1.2 LinkedList独有的方法

  • 特点:提供了一系列操作首尾元素的方法。

  • 方法

    • addFirst, offerFirst, push:在列表首部添加元素。

    • addLast, offerLast, offer:在列表尾部添加元素。

    • getFirst, getLast, peekFirst, peekLast:获取首尾元素。

    • removeFirst, removeLast, pollFirst, pollLast:删除首尾元素。

特定方法示例
LinkedList<String> list = new LinkedList<>();
list.addFirst("aaa"); // 添加到第一个位置
list.addLast("xxx"); // 添加到最后一个位置
String firstElement = list.getFirst(); // 获取第一个元素
list.removeFirstOccurrence("元素"); // 删除第一次出现的指定元素

1.3 队列模式(先进先出)

  • 作用:利用 LinkedList 实现队列功能。

  • 操作

    • 使用 add 方法添加元素。

    • 使用 removeFirst 方法移除并返回队列的头部元素。

队列模式示例
LinkedList<String> queue = new LinkedList<>();
queue.add("aaa"); // 入队
String head = queue.removeFirst(); // 出队

1.4 栈模式(先进后出)

  • 作用:利用 LinkedList 实现栈功能。

  • 操作

    • 使用 push 方法添加元素到栈顶。

    • 使用 pop 方法移除并返回栈顶元素。

栈模式示例
LinkedList<String> stack = new LinkedList<>();
stack.push("aaa"); // 入栈
String top = stack.pop(); // 出栈

总结

LinkedList 在 Java 集合框架中是一个非常灵活的类,不仅可以作为列表使用,还可以轻松地作为队列或栈实现。其独特的双向链表结构提供了高效的元素插入和删除操作。通过合理利用 LinkedList 的这些特性,可以在多种场景下实现高效的数据操作。

2.Java Vector 类的使用和特性

2.1 Vector的使用

  • 目的:探索 Vector 类的基本操作和使用。

  • 特点Vector 是一个同步的动态数组,提供线程安全的集合操作。

基本操作示例
Vector<String> list = new Vector<>();
list.add("小希"); // 添加元素
list.add(5, "小翔"); // 添加元素到指定位置
list.set(2, "小君"); // 设置指定位置的元素
String string = list.get(2); // 获取指定位置的元素
int size = list.size(); // 获取集合大小
  • 批量操作:使用 addAllCollections.addAll 进行集合的批量添加。

  • 检查和删除:使用 contains, remove, removeAll 等方法进行元素检查和删除。

  • 子集和数组转换subList 获取子集,toArray 转换为数组。

  • 遍历方法:支持 for 循环,foreach 循环,IteratorListIterator 遍历。

2.2 Vector的发展历史

  • 历史背景Vector 类自 JDK 1.0 就存在,比集合框架更早。

  • 集合框架引入:JDK 1.2 引入了集合框架,Vector 被整合进 List 接口。

  • 向后兼容:为了兼容旧代码,Java 保留了 Vector

旧方法示例
Vector<String> v = new Vector<>();
v.addElement("aaa"); // 添加元素
v.removeElement("bbb"); // 删除元素
Enumeration<String> elements = v.elements(); // 遍历集合
while(elements.hasMoreElements()){String element = elements.nextElement();System.out.println(element);
}
  • 同步特性Vector 的所有操作都是线程安全的,但这也导致性能稍低于 ArrayList

  • 替代方案:在非多线程环境下,通常推荐使用 ArrayList 代替 Vector

总结

Vector 是 Java 早期集合类之一,提供线程安全的动态数组实现。尽管在现代 Java 应用中,ArrayList 更为常用,Vector 仍然在一些特定场景下(如线程安全需求较高的环境)有其应用价值。了解 Vector 的历史和特性有助于更好地理解 Java 集合框架的发展及其各类集合的适用场景。

3.Java 中 Stack 和 HashSet 的使用及特性

3.1Stack 的使用

  • 知识点:Stack 类的基本使用,栈模式(先进后出)。

  • 继承关系:Stack 继承自 Vector 类。

  • 基本操作

    • push:将元素压入栈顶。

    • pop:移除并返回栈顶元素。

    • peek:仅返回栈顶元素,不删除。

    • empty:检查栈是否为空。

    • search:查找元素在栈中的位置。

示例代码
Stack<String> stack = new Stack<>();
stack.push("aaa");
String pop = stack.pop(); // 移除并返回栈顶元素
String peek = stack.peek(); // 返回栈顶元素
boolean isEmpty = stack.empty(); // 检查栈是否为空
int position = stack.search("bbb"); // 查找元素位置

3.2 HashSet 的使用

3.2.1 HashSet的基本使用
  • 目的:展示 HashSet 的基本操作。

  • 特点:HashSet 是基于 HashMap 实现的,提供了快速的插入、搜索和删除操作。

  • 基本操作

    • add:添加元素。

    • remove:删除元素。

    • contains:检查是否包含某个值。

    • isEmpty:检查集合是否为空。

    • size:获取集合的大小。

    • toArray:将集合转换为数组。

示例代码
HashSet<String> set = new HashSet<>();
set.add("小希");
set.remove("小光");
boolean contains = set.contains("小希");
boolean isEmpty = set.isEmpty();
int size = set.size();
Object[] array = set.toArray();
3.2.2 HashSet的特点
  • 特点:HashSet 具有唯一性(无重复元素)和无序性。

  • 实现原理:通过哈希表(实际上是 HashMap 的实例)实现。

  • 用途:适用于需要快速查找且不允许重复元素的场景。

示例代码
HashSet<String> set = new HashSet<>();
set.add("aaa");
set.add("bbb");
set.add("ccc"); // 添加元素
set.add("ddd");
set.add("Aa");
set.add("BB");

总结

  • Stack:提供了典型的栈操作,适用于需要先进后出(LIFO)数据结构的场景。

  • HashSet:提供了高效的元素存储和访问,适用于需要快速访问且元素唯一的场景,但不保证元素的顺序。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/92602.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/92602.shtml
英文地址,请注明出处:http://en.pswp.cn/web/92602.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[机器学习]03-基于核密度估计(KDE)的鸢尾花数据集分类

关键点&#xff1a;使用核密度估计&#xff08;KDE&#xff09; 估计类别条件概率密度&#xff08;高斯核&#xff0c;带宽0.2&#xff09;采用最大后验概率&#xff08;MAP&#xff09; 决策准则进行分类程序代码&#xff1a;import random import matplotlib from sklearn.ne…

jmeter怎么实现多个请求真正的同时发送

1.首先在插件管理器Plugins Manager中搜索插件Parallel Controller&Sampler&#xff0c;勾选上对应的插件后&#xff0c;在右下角点击Apply Changes and Restart JMeter&#xff0c;安装插件2.插件安装完毕后&#xff0c;然后在线程组上面右击&#xff0c;点击添加--逻辑控…

复杂环境下车牌识别准确率↑29%:陌讯动态特征融合算法实战解析

原创声明本文为原创技术解析&#xff0c;核心技术参数与架构设计引用自《陌讯技术白皮书》&#xff0c;转载需注明来源。一、行业痛点&#xff1a;车牌识别的现实挑战在智慧交通、停车场管理等场景中&#xff0c;车牌识别作为关键技术环节&#xff0c;长期面临多重环境干扰。据…

Express中间件和路由及响应方法

1.中间件分类 应用程序级别中间件 通过 app.use() 或 app.METHOD()&#xff08;如 app.get&#xff09;绑定的中间件&#xff0c;作用于整个应用程序。例如 记录请求日志、解析请求体等全局功能。例如&#xff1a; app.use((req, res, next) > {console.log(Request URL:…

Dokcer创建中间件环境

简而言之&#xff0c;用docker来搞中间件环境比价好使&#xff0c;不用关心各种环境了 rabbitmqsudo docker run -d \--name rabbitmq \-p 5672:5672 \-p 15672:15672 \rabbitmq:3.8-managementredis 5.0.3 docker start my-redisdocker run --name my-redis -d -p 6379:6379 \…

Linux高级编程-文件操作

1.Linux下的文件类型7种文件类型&#xff1a;b 块设备文件 -------> 存储类设备&#xff08;硬盘&#xff09; c 字符设备文件 ------->如输入输出设备&#xff08;鼠标键盘显示器...&#xff09; d 目录文件 ------->文件夹 - 普通文件 -------&g…

web:vue中import *** from 和import {***} from的区别

在Vue.js中,import语句用于导入模块、组件或变量等。使用带花括号{}和不带花括号的区别主要在于导入的内容是具名导出(named exports)还是默认导出(default export)。 默认导入 (Default Import) - 不带花括号 import Vue from vue; import MyComponent from ./MyCompone…

Mysql如何优化my.conf配置文件?

优化 MySQL 的 my.cnf 配置文件&#xff0c;可以显著提升数据库性能&#xff0c;特别是在高并发或大数据量场景下。以下是优化 my.cnf 的方法和建议&#xff0c;涵盖 常见配置项、参数说明 和 优化技巧。1. 优化前的准备工作在修改 my.cnf 之前&#xff0c;需了解以下内容&…

Cherryusb UAC例程对接STM32内置ADC和DAC播放音乐和录音(上)=>TIM+DAC+ADC+DMA正弦波回环测试

0. 概述 文本目标基于Cherryusb官方例程audio_v1_mic_speaker_multichan_template.c&#xff0c;底层对接STM32的内置ADC和DAC&#xff0c;实现录音和播放。通过电脑播放歌曲&#xff0c;板子发出声音。通过电脑录音机开启录音&#xff0c;板子作为麦克风采集声音&#xff0c;…

数模个人笔记

写在前面&#xff1a;不建议观看&#xff0c;会烂尾的1.马氏链&#xff1a;状态空间指的是随机变量的取值范围&#xff0c;xi称为一个状态&#xff0c;应用背景在现在的条件下下一状态发生的概率&#xff0c;比如退火&#xff0c;他的条件概率可化简为&#xff1a;且nm时刻的概…

Spring Boot自定义Starter:从原理到实战全解析

1. 背景与需求1.1 什么是Starter&#xff1f; Spring Boot的起步依赖&#xff08;Starter&#xff09;是一种特殊的依赖描述符&#xff0c;用于简化Spring应用的依赖管理和自动配置。官方文档将Starter定义为“一组方便的依赖描述符”&#xff0c;开发者只需引入对应的Starter&…

安宝特方案丨工业AR+AI质检方案:致力于提升检测精度与流程效率

据IDC预测&#xff0c;2025年中国工业AI质检市场规模将达62亿元&#xff0c;年复合增长率28.5%&#xff0c;新能源、消费电子、高端装备三大领域贡献超70%市场份额。这一数据印证了AI质检已从可选技术升级为制造业降本增效的生存刚需。当前制造业质检环节正面临&#xff1a;精度…

AudioLLM

参考链接&#xff1a;https://mp.weixin.qq.com/s/cscrUn7n_o6PdeQRzWpx8g 视频教程&#xff1a;https://www.bilibili.com/video/BV1LGbozkEDY 模型代码&#xff1a;https://github.com/boson-ai/higgs-audio 如果是两个模型加在一起&#xff1a;一个语言模型&#xff0c;一个…

基于 CEP 引擎的算法拆单与调度实践—基础篇

在金融市场中&#xff0c;大额订单的一次性交易可能会对市场价格产生较大冲击&#xff0c;导致交易成本增加。例如&#xff0c;大额买入订单可能会迅速推高股价&#xff0c;使后续买入成本上升&#xff1b;大额卖出订单则可能打压股价&#xff0c;造成资产贱卖。拆单算法通过将…

开源 C# TCP 通信框架 SocketDJ 发布:轻量、免费、可扩展

前言市面上的网络通信框架琳琅满目&#xff0c;功能强大者有之&#xff0c;但不少都存在功能闭源、商业收费、学习成本高等问题。作为一名热爱底层技术的开发者&#xff0c;我始终相信&#xff1a;基础通信能力应当简单、透明且免费。最近正好有项目需求&#xff0c;索性动手从…

移动机器人路径规划中ROS2中间件性能的研究综述

导读&#xff1a; 随着移动机器人在工业自动化、特种作业及智能服务领域的广泛应用&#xff0c;其路径规划能力越来越依赖机器人操作系统ROS2的通信性能。ROS2通过去中心化架构与数据分发服务中间件显著提升了系统可靠性&#xff0c;但动态复杂环境中路径规划对通信延迟、带宽…

【昇腾】Atlas 500 A2 智能小站制卡从M.2 SATA盘启动Ubuntu22.04系统,重新上电卡死没进系统问题处理_20250808

一、问题背景 Atlas 500 A2智能小站是华为基于20T 12G版本的Atlas 200I A2加速模块开发的面向广泛边缘应用场景的轻量边缘设备&#xff0c;具有超强计算性能、配置灵活、体积小、支持温度范围宽、环境适应性强、易于维护 管理等特点的产品。Atlas 500 A2智能小站主要应用在智能…

sigaction 中 sa_handler = SIG_IGN 的深度解析与应用实践

sigaction 中 sa_handler SIG_IGN 的深度解析与应用实践 核心意义&#xff1a;主动忽略信号 当 sa_handler 设置为 SIG_IGN 时&#xff0c;内核将完全丢弃指定的信号&#xff0c;不会&#xff1a; 执行默认行为调用任何处理函数中断进程的正常执行 这与 SIG_DFL&#xff08;默…

【LLM实战|langchain、qwen_agent】RAG高级

every blog every motto: You can do more than you think. https://blog.csdn.net/weixin_39190382?type=blog 0. 前言 RAG高级 1. RAG 高效召回方法 合理设置TOP-K 改进索引算法 -知识图谱 引入重排序 重排序模型 BGE-Rerank Cohere Rerank 混合检索 向量索引+关键词索引…

C++方向知识汇总(一)

关于单例模式1.什么是单例模式&#xff1f;答&#xff1a;单例模式是一种创建型设计模式&#xff0c;确保一个类在运行期间仅有一个实例&#xff0c;提供全局唯一的访问点2.单例模式的目的&#xff1f;答&#xff1a;避免重复创建资源消耗大的对象&#xff0c;例如日志系统、线…