JAVA集合详解:用法、实例及适用场景

news2025/2/5 6:56:23

在这里插入图片描述

引言:
在JAVA编程中,集合是一种非常重要且常用的数据结构。通过使用集合,我们可以高效地组织和操作不同类型的数据。本文将深入探讨JAVA中各种集合的用法及实例,并介绍适用场景,以帮助更好地理解和应用集合。

---------------文章目录---------------

    • 一、集合框架概述
    • 二、List集合
      • 1. ArrayList
      • 2. LinkedList
      • 3. Vector
    • 三、Set集合
      • 1. HashSet
      • 2. TreeSet
    • 四、Map集合
      • 1. HashMap
      • 2. TreeMap
    • 五、适用场景总结

一、集合框架概述

JAVA集合框架(Java Collections Framework)提供了一套通用的接口和类,用于处理不同类型的集合对象。它包含了一些基本的接口(如List、Set、Map),以及一些实现这些接口的具体类(如ArrayList、HashSet、HashMap)。
在这里插入图片描述

二、List集合

1. ArrayList

  • 用法:ArrayList是一个可变大小的数组实现,适用于需要频繁访问元素的场景。
  • 实例:
    ArrayList<String> list = new ArrayList<>();
    list.add("apple");
    String element = list.get(0);
    list.remove("apple");
    for (String element : list) { ... }
    

2. LinkedList

  • 用法:LinkedList是一个双向链表实现,适用于需要频繁插入和删除元素的场景。
  • 实例:
    LinkedList<String> list = new LinkedList<>();
    list.add("banana");
    String element = list.getFirst();
    list.removeLast();
    Iterator<String> iterator = list.iterator();
    while (iterator.hasNext()) { ... }
    

3. Vector

  • 用法:Vector与ArrayList相似,但是线程安全,适用于并发环境。
  • 实例:
    Vector<String> vector = new Vector<>();
    vector.addElement("orange");
    String element = vector.elementAt(0);
    vector.removeElement("orange");
    Enumeration<String> enumeration = vector.elements();
    while (enumeration.hasMoreElements()) { ... }
    

三、Set集合

1. HashSet

  • 用法:HashSet使用哈希表实现,适用于不允许重复元素的场景。
  • 实例:
    HashSet<String> set = new HashSet<>();
    set.add("cat");
    boolean exists = set.contains("cat");
    set.remove("cat");
    for (String element : set) { ... }
    

2. TreeSet

  • 用法:TreeSet使用红黑树实现,适用于需要元素自动排序的场景。
  • 实例:
    TreeSet<String> set = new TreeSet<>();
    set.add("dog");
    String firstElement = set.first();
    set.remove("dog");
    Iterator<String> iterator = set.iterator();
    while (iterator.hasNext()) { ... }
    

四、Map集合

1. HashMap

  • 用法:HashMap是基于哈希表的键值对实现,适用于需要快速查找和存储键值对的场景。
  • 实例:
    HashMap<String, Integer> map = new HashMap<>();
    map.put("apple", 10);
    Integer value = map.get("apple");
    map.remove("apple");
    for (Map.Entry<String, Integer> entry : map.entrySet()) { ... }
    

2. TreeMap

  • 用法:TreeMap基于红黑树实现,适用于需要按键自动排序的场景。
  • 实例:
    TreeMap<String, Integer> map = new TreeMap<>();
    map.put("banana", 20);
    Map.Entry<String, Integer> firstEntry = map.firstEntry();
    map.remove("banana");
    Iterator<Map.Entry<String, Integer>> iterator = map.entrySet().iterator();
    while (iterator.hasNext()) { ... }
    

五、适用场景总结

  • 如果需要频繁访问元素,使用ArrayList。
  • 如果需要频繁插入和删除元素,使用LinkedList。
  • 如果在并发环境下使用,使用Vector。
  • 如果不允许重复元素且无序,使用HashSet。
  • 如果需要自动排序,使用TreeSet。
  • 如果需要快速查找和存储键值对,使用HashMap。
  • 如果需要按键自动排序,使用TreeMap。

结论:
通过本文的介绍,我们对JAVA集合框架中各种集合类型有了更深入的了解,并了解了它们的用法、实例及适用场景。在实际开发中,选择合适的集合类型能提高代码的效率和可读性,更好地处理和操作数据。

参考资料:
-《Java集合框架 - 集合与数组》, https://www.runoob.com/w3cnote/java-collection-framework.html
-《Java™ Platform Standard Ed. 8 - API Specification》,https://docs.oracle.com/javase/8/docs/api/

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

TTX1994-可调谐激光器控制系统

花了两周时间&#xff0c;利用下班时间&#xff0c;设计了一个ITLA可调谐激光器控制系统&#xff0c;从硬件到软件。下面这个图片整套硬件系统&#xff0c;软件硬件都自己设计&#xff0c;可以定制&#xff0c;做到单片机问题也不大。相当于一套光源了 这是软件使用的界面&…

【算法】换根DP

文章目录 什么是换根DP例题分析——P3478 [POI2008] STA-Station题目列表1834. 树中距离之和⭐⭐⭐⭐⭐&#xff08;两次 dfs&#xff09;思路——冷静分析&#xff0c;列出式子算法分析⭐⭐⭐⭐⭐ 310. 最小高度树⭐⭐⭐⭐⭐2581. 统计可能的树根数目⭐⭐⭐⭐⭐C. Bear and Tr…

Coggle 30 Days of ML(23年7月)打卡

前言 最近开始关注LLM相关知识&#xff0c;但之前的NLP范式的技能不能丢。 这个练习还是比较适合我&#xff0c;感谢举办方选题&#xff0c;快速全部打卡一波。 打卡记录 任务一: 报名比赛&#xff0c;下载比赛数据集并完成读取 比赛链接&#xff1a;https://challenge.xfy…

第十六章:Understanding Convolution for Semantic Segmentation——理解用于语义分割的卷积

0.摘要 最近深度学习特别是深度卷积神经网络&#xff08;CNN&#xff09;的进展&#xff0c;显著提高了之前语义分割系统的性能。在这里&#xff0c;我们展示了通过操作与卷积相关的操作来改进逐像素的语义分割&#xff0c;这些操作在理论和实践上都具有价值。首先&#xff0c;…

【Java动态代理】—— 每天一点小知识

&#x1f4a7; J a v a 动态代理 \color{#FF1493}{Java动态代理} Java动态代理&#x1f4a7; &#x1f337; 仰望天空&#xff0c;妳我亦是行人.✨ &#x1f984; 个人主页——微风撞见云的博客&#x1f390; &#x1f433; 《数据结构与算法》专栏的文章图文并茂&am…

PyTorch 深度学习处理多维特征的输入

import numpy as np import torch import matplotlib.pyplot as plt# prepare dataset xy np.loadtxt(diabetes.csv, delimiter,, dtypenp.float32) x_data torch.from_numpy(xy[:, :-1]) # 第一个‘&#xff1a;’是指读取所有行&#xff0c;第二个‘&#xff1a;’是指从第…

Linux常用命令——eject命令

在线Linux命令查询工具 eject 用来退出抽取式设备 补充说明 eject命令用来退出抽取式设备。若设备已挂入&#xff0c;则eject命令会先将该设备卸除再退出。 eject允许可移动介质&#xff08;典型是cd-ROM、软盘、磁带、或者JAZ以及zip磁盘&#xff09;在软件控制下弹出。该…

Visual Studio 2022打包exe ,自动按日期生成文件

echo offREM 获取当前的日期和时间 set YEAR%DATE:~0,4% set MONTH%DATE:~5,2% set DAY%DATE:~8,2% set HOUR%TIME:~0,2% set MINUTE%TIME:~3,2% set SECOND%TIME:~6,2%REM 获取原始文件名 set "FilePath$(TargetPath)" for %%F in ("%FilePath%") do (set…

第46节:cesium 水面效果(含源码+视频)

结果示例: 完整源码: <template><div class="viewer"><vc-viewer @ready="ready" :logo="false"><!

【AT89C52单片机项目】99累减器

实验目的 掌握STC89C52RC单片机最小系统构成&#xff0c;最小系统由单片机芯片、时钟电路及复位电路组成。 掌握STC89C52RC单片机开发板与数码管的原理图、控制方式。 掌握对单片机I/O的复杂控制 熟练掌握C语言的设计和调试方法。 实验仪器 一套STC89C52RC开发板套件&…

Linux C/C++实现Socks5代理及Socks5协议抓包分析

如果你想在保持匿名的同时以更好的安全性和性能浏览网页&#xff0c;SOCKS5代理是一个不错的选择。 在使用互联网时&#xff0c;存在许多安全和数据隐私风险。此外&#xff0c;您可能不得不面对一些限制。想象一下&#xff0c;你想访问一个网站&#xff0c;但你根本无法访问它&…

【MySQL】从执行计划了解MySQL优化策略

文章目录 前言一、什么是执行计划1.1. 使用EXPLAIN命令1.2. 使用PROFILING 二、执行计划生成过程三、执行计划的操作符3.1. 查询计划操作符3.2. 连接操作符3.3. 辅助操作符 四、执行计划的诊断分析4.1. 使用EXPLAIN命令4.2. 检查索引4.3. 分析查询日志 五、如何分析 EXPLAIN 结…

pytorch 欠拟合和过拟合 多项式回归

欠拟合 训练误差和验证误差都有&#xff0c;还可能比较严重&#xff0c; 但它们之间仅有差距不大。 这个时候模型不能降低训练的误差&#xff0c;有可能是我们设计的模型简单了&#xff0c;表达能力不足&#xff0c; 捕获试图学习的模式比较难。由于我们的训练和验证误差之间的…

java——this、封装、static修饰成员变量、成员方法

目录 ☂️this的用法 1.访问当前对象的成员变量 2.访问当前对象的成员方法 3.调用当前对象的其他构造方法来简化代码 ☂️封装 什么是封装&#xff1f; 访问修饰限定符 ☂️static修饰成员变量 ☂️static修饰成员方法 ☂️this的用法 1.访问当前对象的成员变量 我们…

容器运行时

容器运行时 Docker运行时Containerd运行时CRI 版本支持Containerd安装配置 systemd cgroup 驱动 CRI-O运行时Mirantis 容器运行时 目前k8s支持的几个常用的运行时 containerdCRI-ODocker EngineMirantis Container Runtime v1.24 之前的 Kubernetes 版本直接集成了 Docker Engi…

IDEA+spring boot+activiti+shiro+layui+Mysql权限管理系统源码

IDEAspring bootactivitishirolayuiMysql权限管理系统 一、系统介绍1.环境配置 二、系统展示1. 管理员登录2.主页3.用户管理4.部门管理5. 菜单管理6. 角色管理7. 字典管理8.定时任务9.操作日志10.生成管理 三、部分代码UserMapper.javaUserController.javaUser.java 四、其他获…

Python Flask构建微信小程序订餐系统 (七)

🔥 账号管理显示状态 🔥 账号管理选择状态后并显示 修改前 修改后 运行效果 🔥 账号管理执行账号的删除 🔥 修改前 修改后 这里使用的图标库 font awesome</

引入Vue的方式

1.cdn引入 <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"widthdevice-width, initial-scale1.0"…

竞赛管理系统实现自动化测试

目录 一、为竞赛管理系统设计测试用例 二、根据测试用例进行测试 登录页面测试 功能测试 界面测试 用户注册页面 功能测试 界面测试 竞赛信息列表页面测试 界面测试 添加竞赛信息页面测试 功能测试 界面测试 修改竞赛信息页面测试 功能测试 一、为竞赛管理…

Rollup 的作用、使用教程、支持 Vue、以及与 Webpack / Babel 的区别

一、前置知识 没接触过前端模块化概念的同学可先参考&#xff1a;JS & Node 模块化解释&#xff1a;AMD、UMD、CommonJS、 ESM 二、什么是 Rollup &#xff1f; Rollup 工具可以将代码转成不同模块&#xff0c;实现一套代码多端&#xff08;浏览器/Node&#xff09;引入…