Java 集合

Java 集合

在 Java 编程中,集合框架(java.util 包)是处理一组对象的强大工具。与数组不同,集合提供了更灵活的数据存储和操作方式。本文将详细介绍 Java 集合框架的核心接口、常用实现类及其应用场景,帮助你更好地理解和使用集合。


1. 什么是集合?

集合是用于存储一组对象的容器。Java 集合框架提供了多种数据结构和算法,方便开发者对数据进行增删改查等操作。集合框架主要分为两大类:

  1. Collection 接口:用于存储一组对象。
  2. Map 接口:用于存储键值对(key-value)。

2. 集合框架的核心接口

2.1 Collection 接口

Collection 是集合框架的根接口,它有三个主要的子接口:

  1. List:有序且允许重复元素的集合。
  2. Set:无序且不允许重复元素的集合。
  3. Queue:用于存储待处理元素的队列。
2.2 Map 接口

Map 用于存储键值对,键(key)是唯一的,值(value)可以重复。常见的实现类有 HashMapTreeMap 等。


3. 集合与数组的对比

特性数组集合
容量固定大小动态扩展
数据类型可以存储基本类型和引用类型只能存储引用类型
功能功能有限提供丰富的操作方法
适用场景数据量固定且简单数据量动态变化且复杂

4. List 集合

List 是有序且允许重复元素的集合,常用的实现类有 ArrayListLinkedList

4.1 ArrayList

ArrayList 是基于动态数组实现的,适合随机访问和遍历。

常用方法

  • add(E e):添加元素。
  • remove(int index):删除指定位置的元素。
  • get(int index):获取指定位置的元素。
  • set(int index, E element):修改指定位置的元素。

示例

import java.util.ArrayList;
import java.util.List;public class ArrayListDemo {public static void main(String[] args) {List<String> list = new ArrayList<>();list.add("Java");list.add("Python");list.add("C++");System.out.println(list); // 输出: [Java, Python, C++]}
}
4.2 LinkedList

LinkedList 是基于双向链表实现的,适合频繁的插入和删除操作。

常用方法

  • addFirst(E e):在链表头部添加元素。
  • addLast(E e):在链表尾部添加元素。
  • removeFirst():删除链表头部的元素。
  • removeLast():删除链表尾部的元素。

示例

import java.util.LinkedList;public class LinkedListDemo {public static void main(String[] args) {LinkedList<String> list = new LinkedList<>();list.add("Java");list.addFirst("Python");list.addLast("C++");System.out.println(list); // 输出: [Python, Java, C++]}
}

5. Set 集合

Set 是无序且不允许重复元素的集合,常用的实现类有 HashSetTreeSet

5.1 HashSet

HashSet 是基于哈希表实现的,适合快速查找和去重。

常用方法

  • add(E e):添加元素。
  • remove(Object o):删除元素。
  • contains(Object o):判断是否包含指定元素。

示例

import java.util.HashSet;
import java.util.Set;public class HashSetDemo {public static void main(String[] args) {Set<String> set = new HashSet<>();set.add("Java");set.add("Python");set.add("Java"); // 重复元素不会被添加System.out.println(set); // 输出: [Java, Python]}
}
5.2 TreeSet

TreeSet 是基于红黑树实现的,元素会按照自然顺序或自定义顺序排序。

示例

import java.util.TreeSet;
import java.util.Set;public class TreeSetDemo {public static void main(String[] args) {Set<String> set = new TreeSet<>();set.add("Java");set.add("Python");set.add("C++");System.out.println(set); // 输出: [C++, Java, Python]}
}

6. Map 集合

Map 用于存储键值对,常用的实现类有 HashMapTreeMap

6.1 HashMap

HashMap 是基于哈希表实现的,适合快速查找和插入。

常用方法

  • put(K key, V value):添加键值对。
  • get(Object key):根据键获取值。
  • remove(Object key):删除指定键的映射。

示例

import java.util.HashMap;
import java.util.Map;public class HashMapDemo {public static void main(String[] args) {Map<String, String> map = new HashMap<>();map.put("Java", "编程语言");map.put("Python", "脚本语言");System.out.println(map.get("Java")); // 输出: 编程语言}
}
6.2 TreeMap

TreeMap 是基于红黑树实现的,键会按照自然顺序或自定义顺序排序。

示例

import java.util.TreeMap;
import java.util.Map;public class TreeMapDemo {public static void main(String[] args) {Map<String, String> map = new TreeMap<>();map.put("Java", "编程语言");map.put("Python", "脚本语言");map.put("C++", "系统编程语言");System.out.println(map); // 输出: {C++=系统编程语言, Java=编程语言, Python=脚本语言}}
}

7. 集合的应用场景

  1. 动态数据存储:当数据量不确定时,使用集合比数组更灵活。
  2. 去重:使用 Set 集合可以轻松实现数据去重。
  3. 键值对存储:使用 Map 集合可以方便地存储和查找键值对。
  4. 排序:使用 TreeSetTreeMap 可以实现元素的自动排序。

8. 小结

  • 集合框架是 Java 中处理一组对象的强大工具,分为 CollectionMap 两大类。
  • List 是有序且允许重复的集合,常用实现类有 ArrayListLinkedList
  • Set 是无序且不允许重复的集合,常用实现类有 HashSetTreeSet
  • Map 是键值对的集合,常用实现类有 HashMapTreeMap

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

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

相关文章

go基本语法

跟Java比较学习。 hello word 示例代码 test1.go文件&#xff1a; // 包路径 package main// 导入模块&#xff0c;下面两种都行 import ("fmt" ) import "log"// main方法 func main() {log.Print("hello word !!!")fmt.Print("hello …

【Docker】如何在Linux、Windows、MacOS中安装Docker

Linux安装Docker 在终端中执行一键安装脚本命令安装docker sudo curl -fsSL https://gitee.com/tech-shrimp/docker_installer/releases/download/latest/linux.sh | bash -s docker --mirror Aliyun1.1 配置docker镜像源 在终端执行 一行命令&#xff0c;编辑配置文件 sudo …

2.24力扣-回溯电话号码的字母组合

17. 电话号码的字母组合 - 力扣&#xff08;LeetCode&#xff09; class Solution {List<String> ans new LinkedList<>();StringBuilder temp new StringBuilder();public List<String> letterCombinations(String digits) {if(digitsnull || digits.leng…

Cocos Creator Shader入门实战(一):材质和Effect的了解

引擎版本&#xff1a;3.8.5 环境&#xff1a; Windows 简介 在Cocos Creator中&#xff0c;游戏炫彩缤纷的效果是借助着色器(Shader)来实现的。 Cocos主要基于OpenGL ES&#xff0c;而Shader的编写则是在可编程渲染管线中基于修改&#xff1a;顶点着色器(Vertex) 和 片段着色…

akka现有的分布式定时任务框架总结

根据你的需求&#xff0c;以下是一些基于 Akka 实现的分布式定时任务框架&#xff0c;以及相关的 GitHub 项目推荐&#xff1a; 1. Openjob Openjob 是一个基于 Akka 架构的新一代分布式任务调度框架&#xff0c;支持多种定时任务、延时任务、工作流设计&#xff0c;采用无中…

微信小程序地图map全方位解析

微信小程序地图map全方位解析 微信小程序的 <map> 组件是一个功能强大的工具&#xff0c;可以实现地图展示、定位、标注、路径规划等多种功能。以下是全方位解析微信小程序地图组件的知识点&#xff1a; 一、地图组件基础 1. 引入 <map> 组件 在页面的 .wxml 文…

Python的PyTorch+CNN深度学习技术在人脸识别项目中的应用

人脸识别技术是一种基于人脸特征进行身份识别的生物识别技术&#xff0c;其核心原理包括人脸检测、人脸对齐、特征提取、特征匹配、身份识别。 一、应用场景 安防&#xff1a;门禁、监控。 金融&#xff1a;刷脸支付、身份验证。 社交&#xff1a;自动标注、美颜。 医疗&am…

《数据库索引设计与优化》译本错误纠正(1)

今天在学习《数据库索引设计与优化》第十一章第198页的时候遇到一个问题&#xff0c;即参数的文字描述与实际不符。我看的是从网络上找到的译本&#xff0c;许多喜欢白嫖的朋友可能也会像我一样遇到这种问题。 可以看到&#xff0c;上面对参数Z的描述是&#xff1a;Z上一次索引…

API测试工具:Swagger vs Postman 2025最新全面对比

随着微服务架构的普及和云原生应用的激增&#xff0c;高效的 API 开发、测试和文档管理工具变得越来越重要。在众多 API 工具中&#xff0c;Swagger 和 Postman 各自以不同的方式解决着 API 开发生命周期中的关键问题&#xff0c;本文将从多个维度深入对比这两款工具&#xff0…

如何查询SQL Server数据库服务器的IP地址

如何查询SQL Server数据库服务器的IP地址 作为数据库管理员或开发人员&#xff0c;了解如何查询SQL Server数据库服务器的IP地址是一项重要技能。本文将介绍几种简单而有效的方法&#xff0c;帮助你轻松获取这一信息。无论你是新手还是经验丰富的专业人士&#xff0c;这些方法…

centos 7 安装python3 及pycharm远程连接方法

安装openssl 使用pip3安装 virtualenv的时候会提示WARNING: pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available. 这是因为缺少openssl 2.0以上版本 解决办法&#xff1a; 一、先确认版本 openssl version 二、安…

AI人工智能之机器学习sklearn-数据预处理和划分数据集

1、概要 本篇学习AI人工智能之机器学习sklearn数据预处理和划分数据集&#xff0c;从代码层面讲述如何进行数据的预处理和数据集划分。 2、简介 本片讲述数据预处理的标准化处理、归一化处理&#xff0c;以常用的两个类为例 标准化处理类 StandardScaler归一化处理类 MinMax…

智能硬件-01智能停车场

行业背景 随着现代人们生活水平的提高&#xff0c;私家车辆在不断增加&#xff0c;小区将面临着临时车用户要多于固定车用户的窘境&#xff0c;尤其是在早晚高峰时段车辆出入拥堵&#xff0c;对小区的车辆管理难度越来越大&#xff0c;对停车场收费员的岗位要求越来越高&#…

定长内存池的实现、测试及错误分析

背景 C/C 申请内存使用的是 malloc &#xff0c;malloc 其实就是一个大众货&#xff0c;什么场景下都可以用&#xff0c;但是什么场景下都可以用就意味着什么场景下都不会有很高的性能。 定长内存池解决固定大小的内存申请释放需求&#xff0c; 性能达到极致&#xff0c;不考…

vue3 下载文件 responseType-blob 或者 a标签

在 Vue 3 中&#xff0c;你可以使用 axios 或 fetch 来下载文件&#xff0c;并将 responseType 设置为 blob 以处理二进制数据。以下是一个使用 axios 的示例&#xff1a; 使用 axios 下载文件 首先&#xff0c;确保你已经安装了 axios&#xff1a; npm install axios然后在你…

Search API:让数据获取变得简单高效的搜索引擎代理商

Search API&#xff1a;让数据获取变得简单高效的搜索引擎代理商 在当今数字化时代&#xff0c;数据驱动的决策变得越来越重要&#xff0c;而获取精准、实时的数据是众多企业、研究机构和开发者的核心需求。然而&#xff0c;直接爬取搜索引擎或行业资讯网站可能会遇到诸多挑战&…

halcon三维对象处理例程总结(二)

目录 一、intersect_plane_object_model_3d二、interactive_intersection三、measure_plant四、moments_object_model_3d五、projective_trans_object_model_3d六、read_object_model_3d_generic_ascii一、intersect_plane_object_model_3d 计算三维物体模型与平面之间的相交部…

基于 Python 的项目管理系统开发

基于 Python 的项目管理系统开发 一、引言 在当今快节奏的工作环境中&#xff0c;有效的项目管理对于项目的成功至关重要。借助信息技术手段开发项目管理系统&#xff0c;能够显著提升项目管理的效率和质量。Python 作为一种功能强大、易于学习且具有丰富库支持的编程语言&…

2月24(信息差)

&#x1f30d;“任意舞蹈任意学”&#xff01;宇树机器人又进化了 传Meta有意合作抛出橄榄枝 &#x1f384;两部门&#xff1a;深入推进公路沿线充电基础设施建设 推动大功率充电技术标准应用 ✨小米15 Ultra、小米SU7 Ultra定档2月27日 雷军宣布&#xff1a;向超高端进发 1.…

mysql 迁移到人大金仓数据库

我是在windows上安装了客户端工具 运行数据库迁移工具 打开 在浏览器输入http://localhost:54523/ 账号密码都是kingbase 添加mysql源数据库连接 添加人大金仓目标数据库 添加好的两个数据库连接 新建迁移任务 选择数据库 全选 迁移中 如果整体迁移不过去可以单个单个或者几个…