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

Java List不同实现类的对比

List不同实现类的对比

文章目录

  • List不同实现类的对比
    • 实现类之一`ArrayList`
    • 实现类之二 `LinkedList`
    • 实现类之三 `Vector`
    • 练习

  • java.util.Collection用于存储一个一个数据的框架
  • 子接口:List存储有序的、可重复的数据(相当于动态数组)
    • ArrayList list的主要实现类(线程不安全、效率高) 底层使用Object[]的数组存储。添加数据、查找数据时,效率较高;插入数据、删除数据时,效率较低
    • Vector List的古老实现类 (线程安全、效率低) 底层使用Object[]数组存储
    • LinkedList 底层使用双向链表的方式进行存储。插入数据、删除数据时效率较高;添加数据、查找数据时,效率较低。

实现类之一ArrayList

  • ArrayList 是 List 接口的主要实现类

  • 本质上,ArrayList是对象引用的一个”变长”数组

  • Arrays.asList(…) 方法返回的 List 集合,既不是 ArrayList 实例,也不是 Vector 实例。 Arrays.asList(…) 返回值是一个固定长度的 List 集合

实现类之二 LinkedList

对于频繁的插入或删除元素的操作,建议使用LinkedList类,效率较高。这是由底层采用链表(双向链表)结构存储数据决定的。

特有方法:

  • void addFirst(Object obj)
  • void addLast(Object obj)
  • Object getFirst()
  • Object getLast()
  • Object removeFirst()
  • Object removeLast()

实现类之三 Vector

  • Vector 是一个古老的集合,JDK1.0就有了。大多数操作与ArrayList相同,区别之处在于Vector是线程安全的。
  • 在各种List中,最好把ArrayList作为默认选择。当插入、删除频繁时,使用LinkedList;Vector总是比ArrayList慢,所以尽量避免使用。
  • 特有方法:
    • void addElement(Object obj)
    • void insertElementAt(Object obj,int index)
    • void setElementAt(Object obj,int index)
    • void removeElement(Object obj)
    • void removeAllElements()

练习

键盘录入学生信息,保存到集合List中

  • 定义学生类。存在姓名、年龄的属性
  • 使用ArrayList集合,保存录入的多个学生对象
  • 循环录入方式
  • 录入结束后,用迭代器遍历
//学生类
public class Student {private String name;private int age;public Student(String name, int age) {this.name = name;this.age = age;}public Student(){}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}@Overridepublic String toString() {return "Student{" +"name='" + name + '\'' +", age=" + age +'}';}@Overridepublic boolean equals(Object o) {if (this == o) return true;if (o == null || getClass() != o.getClass()) return false;Student student = (Student) o;return age == student.age && Objects.equals(name, student.name);}@Overridepublic int hashCode() {return Objects.hash(name, age);}
}
//Test类
import java.util.ArrayList;
import java.util.Scanner;public class StudentTest {public static void main(String[] args) {Scanner input = new Scanner(System.in);ArrayList list = new ArrayList();System.out.println("请录入学生信息:");while(true){System.out.println("1,继续录入  0.结束录入");int selection = input.nextInt();if(selection == 0){break;}System.out.println("请输入学生的姓名:");String name = input.next();System.out.println("请输入学生的年龄");int age = input.nextInt();Student s = new Student(name,age);list.add(s);}//遍历集合中的学生信息System.out.println("遍历学生信息");for(Object s : list){System.out.println(s.toString());}input.close();}
}

相关文章:

Java List不同实现类的对比

List不同实现类的对比 文章目录 List不同实现类的对比实现类之一ArrayList实现类之二 LinkedList实现类之三 Vector练习 java.util.Collection用于存储一个一个数据的框架子接口:List存储有序的、可重复的数据(相当于动态数组) ArrayList lis…...

【C语言】 —— 预处理详解(下)

【C语言】 —— 预处理详解(下) 前言七、# 和 \##7.1 # 运算符7.2 ## 运算符 八、命名约定九、# u n d e f undef undef十、命令行定义十一、条件编译11.1、单分支的条件编译11.2、多分支的条件编译11.3、判断是否被定义11.4、嵌套指令 十二、头文件的包…...

Jupyter Notebook简介

Jupyter Notebook是一个开源的Web应用程序,允许你创建和共享包含实时代码、方程、可视化和解释性文本的文档。它广泛用于数据清理和转换、数值模拟、统计建模、机器学习等领域。 Jupyter Notebook的优势包括: 1. **交互式计算**:可以在网页…...

ChatGPT 5.0:一年后的猜想

对于ChatGPT 5.0在未来一年半后的展望与看法,我们可以从以下几个方面进行详细探讨: 一、技术提升与功能拓展 语言翻译能力: ChatGPT 5.0在语言翻译方面有望实现更大突破。据推测,新版本将利用更先进的自然语言处理技术和深度学习…...

Java套红:指定位置合并文档-NiceXWPFDocument

需求:做个公文系统,需要将正文文档在某个节点点击套红按钮,实现文档套红 试了很多方法,大多数网上能查到但是实际代码不能找到关键方法,可能是跟包的版本有关系,下面记录能用的这个。 一:添加依…...

【操作系统】进程管理——进程的同步与互斥(个人笔记)

学习日期:2024.7.8 内容摘要:进程同步/互斥的概念和意义,基于软/硬件的实现方法 进程同步与互斥的概念和意义 为什么要有进程同步机制? 回顾:在《进程管理》第一章中,我们学习了进程具有异步性的特征&am…...

Qt:13.多元素控件(QLinstWidget-用于显示项目列表的窗口部件、QTableWidget- 用于显示二维数据表)

目录 一、QLinstWidget-用于显示项目列表的窗口部件: 1.1QLinstWidget介绍: 1.2属性介绍: 1.3常用方法介绍: 1.4信号介绍: 1.5实例演示: 二、QTableWidget- 用于显示二维数据表: 2.1QTabl…...

恢复出厂设置手机变成砖

上周,许多Google Pixel 6(6、6a、6 Pro)手机用户在恢复出厂设置后都面临着设备冻结的问题。 用户说他们在下载过程中遇到了丢失 tune2fs 文件的错误 。 这会导致屏幕显示以下消息:“Android 系统无法启动。您的数据可能会被损坏…...

解决IntelliJ IDEA中克隆GitHub项目不显示目录结构的问题

前言 当您从GitHub等代码托管平台克隆项目到IntelliJ IDEA,却遇到项目目录结构未能正确加载的情况时,不必太过困扰,本文将为您提供一系列解决方案,帮助您快速找回丢失的目录视图。 1. 调整Project View设置 操作步骤&#xff1…...

Git错误分析

错误案例1: 原因:TortoiseGit多次安装导致,会记录首次安装路径,若安装路径改变,需要配置最后安装的路径。...

pom.xml中重要标签介绍

在 Maven 项目中&#xff0c;pom.xml 文件是项目对象模型&#xff08;POM&#xff09;的配置文件&#xff0c;它定义了项目的依赖关系、插件、构建配置等。以下是 pom.xml 文件中一些重要的标签及其作用&#xff1a; <modelVersion>&#xff1a; 定义 POM 模型的版本。当…...

大模型日报 2024-07-11

大模型日报 2024-07-11 大模型资讯 CVPR世界第二仅次Nature&#xff01;谷歌2024学术指标出炉&#xff0c;NeurIPS、ICLR跻身前十 谷歌2024学术指标公布&#xff0c;CVPR位居第二&#xff0c;超越Science仅次于Nature。CVPR、NeurIPS、ICLR三大顶会跻身TOP 10。 CVPR成全球第二…...

Redis基础教程(十六):Redis Stream

&#x1f49d;&#x1f49d;&#x1f49d;首先&#xff0c;欢迎各位来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里不仅可以有所收获&#xff0c;同时也能感受到一份轻松欢乐的氛围&#xff0c;祝你生活愉快&#xff01; &#x1f49d;&#x1f49…...

机器学习筑基篇,容器调用显卡计算资源,Ubuntu 24.04 快速安装 NVIDIA Container Toolkit!...

[ 知识是人生的灯塔,只有不断学习,才能照亮前行的道路 ] Ubuntu 24.04 安装 NVIDIA Container Toolkit 什么是 NVIDIA Container Toolkit? 描述:NVIDIA Container Toolkit(容器工具包)使用户能够构建和运行 GPU 加速的容器,该工具包括一个容器运行时库和实用程序,用于自动…...

全网第一个java链接阿里云redis并可操作

添加依赖 redis.clients jedis 5.1.2 然后通过 JedisPool pool new JedisPool(host3, 6379); Jedis jedis pool.getResource(); jedis.auth(“username”,“password”); jedis.set(“ab”,“ab”); System.out.println(jedis.get(“ab”)); 即可链接成功&#xff0c;成功…...

Mysql ORDER BY是否走索引?

在 MySQL 中&#xff0c;ORDER BY 子句是否使用索引取决于多种因素&#xff0c;包括查询的具体情况、索引的类型和结构、查询中的其他条件等。 使用索引的情况 单列索引和 ORDER BY&#xff1a; 当 ORDER BY 子句中的列有单列索引时&#xff0c;MySQL 可以利用该索引来加速排序…...

图纸文档管理新篇章:陕西航沣与三品软件合作 优化研发流程

近日&#xff0c;陕西航沣新材料有限公司与三品软件正式达成合作协议&#xff0c;共同打造高效、智能的图纸文档管理平台。此次合作旨在赋能陕西航沣在高性能碳纤维增强纸基摩擦材料领域的创新与发展&#xff0c;提升企业的核心竞争力。 客户简介 陕西航沣新材料有限公司&…...

链式队列的实现

//1:创建循环队列 //2:判空 //4:入队 //5:出队 //6:遍历 //7:队列长度 //8:销毁 main.c #include"loop.h" int main(int argc, const char *argv[]) {loop_p Lloop_create();//创建loop_empty(L);//判空loop_length(L);//长度loop_input(L,10);//入队loop_input(L,…...

深入剖析3D企业云展厅的价值,多维展示和精准营销的创新结合

一、3D企业云展厅的多维展示优势 1、全方位展示企业展品 3D企业云展厅通过3D建模技术为企业提供了全方位的展品展示平台。相比于传统平面的图片或视频&#xff0c;3D展厅能够让用户以任意角度观看展品&#xff0c;仿佛置身于真实展厅中。这种全方位展示不仅能够增加展品的真实…...

前台线程和后台线程(了解篇)

在多线程编程中&#xff0c;理解线程的不同类型对于编写高效、稳定的程序至关重要。特别地&#xff0c;前台线程&#xff08;Foreground Threads&#xff09;与后台线程&#xff08;Background Threads&#xff09;在行为上有着根本的区别&#xff0c;这些区别直接影响到程序的…...

P1163 银行贷款 总结与反思

提炼以下几点&#xff1a;1&#xff0c;问&#xff1a;C中 整型怎么转浮点数&#xff08;int/ long long to double):答&#xff1a;直接赋值即可&#xff0c; eg ll N; double a N;2, 问&#xff1a;C中整型和浮点数怎么做加减法答&#xff1a;直接加减即可&#xff0c;自…...

3步搞定小红书无水印下载:XHS-Downloader开源神器实战全解析

3步搞定小红书无水印下载&#xff1a;XHS-Downloader开源神器实战全解析 【免费下载链接】XHS-Downloader 小红书&#xff08;XiaoHongShu、RedNote&#xff09;链接提取/作品采集工具&#xff1a;提取账号发布、收藏、点赞、专辑作品链接&#xff1b;提取搜索结果作品、用户链…...

离线部署GraphRAG的tiktoken避坑指南:从源码解析到本地化实践

1. 离线部署GraphRAG的核心痛点&#xff1a;tiktoken的网络依赖问题 当你准备在内网环境部署GraphRAG时&#xff0c;第一个拦路虎往往是tiktoken这个看似简单的编码库。我在某金融机构的私有化部署项目中就遇到过这样的场景&#xff1a;所有服务器都处于物理隔离状态&#xff0…...

github上传项目代码手把手运行,包含部分坑

git config --global init.defaultBranch main 自定义默认分支名称&#xff0c;远程分支是main git init&#xff08;默认是master&#xff09; git config --global init.defaultBranch main&#xff08;以后默认使用main&#xff09; git push -f origin main (强制覆盖…...

用STM32CubeMX配置PWM捕获:从定时器选型到串口输出全流程

STM32CubeMX实战&#xff1a;PWM捕获全流程解析与调试技巧 在嵌入式开发中&#xff0c;精确测量PWM信号的周期和占空比是常见需求。本文将带你从零开始&#xff0c;使用STM32CubeMX和HAL库完成PWM捕获功能的完整实现。不同于简单的教程复制&#xff0c;我们会深入探讨两种捕获…...

Java Web 入门学习笔记:Servlet 请求响应与登录功能实战

一、开篇&#xff1a;今日学习核心与目标学习背景&#xff1a;Java Web 入门阶段核心 ——Servlet 与 HTTP 请求响应交互学习目标&#xff1a;掌握 HttpServletRequest/HttpServletResponse 核心用法实现「登录表单提交→Servlet 验证→页面重定向」完整流程解决实操中 404、中…...

如何用AI润色简历?2026年分步指南与实用技巧

在2026年的求职市场中&#xff0c;简历是连接你与心仪岗位的第一座桥梁。面对日益智能化的招聘系统&#xff08;ATS&#xff09;和快节奏的筛选流程&#xff0c;仅凭一份通用简历已难以脱颖而出。这时&#xff0c;AI润色简历从一种新兴尝试转变为高效、精准的必备策略。本文旨在…...

别再折腾LangChain了!用Ollama + DeepSeek R1在WSL2上5分钟搞定本地知识库问答

5分钟极简方案&#xff1a;用OllamaDeepSeek R1在WSL2搭建高效本地知识库 当开发者首次接触本地知识库系统时&#xff0c;往往会被LangChain等框架的复杂性劝退。本文将介绍一种绕过传统复杂流程的极简方案&#xff0c;只需5分钟即可在Windows 11的WSL2环境中搭建可用的问答系统…...

Qwen3.5-9B-AWQ-4bit惊艳效果展示:OCR辅助+场景描述真实生成作品集

Qwen3.5-9B-AWQ-4bit惊艳效果展示&#xff1a;OCR辅助场景描述真实生成作品集 1. 开篇&#xff1a;认识这个视觉理解高手 第一次看到Qwen3.5-9B-AWQ-4bit处理图片的效果时&#xff0c;我着实被惊艳到了。这个模型不仅能准确识别图片中的物体和场景&#xff0c;还能把画面内容…...

实战指南:Autofac 依赖注入在微服务架构中的高效应用

1. Autofac在微服务架构中的核心价值 微服务架构最大的挑战之一就是如何优雅地管理数百个服务的依赖关系。我经历过一个电商系统重构项目&#xff0c;当单体应用拆分成30多个微服务后&#xff0c;手工管理服务依赖就像在玩多米诺骨牌——改一个服务参数可能引发连锁反应。这时候…...