java基础之java容器-Collection,Map

java容器

  • java容器分类
    • 一. Collection
      • 1. List
        • ①. ArrayList
        • ② . LinkedList
        • ③ . Vector
      • 2. Queue队列
        • ①. LinkedList
        • ②. PriorityQueue
      • 3. Set集合
        • ①. HashSet
        • ②. TreeSet
    • 二. Map
      • 1. HashMap
      • 2.TreeMap
      • 3. Hashtable

java容器分类

java容器分为两大类,分别是Collection和Map,而Collection是单个元素的集合,又可以分为List,Queue,Set三大类,而Map是用来存储键值对的,又可以分为HashMap和TreeMap两种

以下是java容器的图解:

在这里插入图片描述
粗略解析:
在这里插入图片描述

一. Collection

Collection是一个集合类的接口,他有三种子类型集合,分别是List,Set,Queue

使用场景:
在这里插入图片描述

1. List

List的特点就是所有的元素是可以重复的。 包括三种Arraylist,LinkedList,Vector

①. ArrayList

ArrayList是一个可以动态增长的数组, ArrayList由于底层是使用数组实现的,所以随机访问速度快,插入删除较慢

使用场景:
1.频繁访问列表中的某一个元素。
2.只需要在列表末尾进行添加和删除元素操作。

常用方法:
————————————————
add():添加元素
addAll():将集合中的所有元素添加到ArrayList中
clear():清空元素
contains():判断元素是否在ArrayList中
get():根据索引获取元素
remove():根据索引删除元素
size():返回ArrayList大小
set():根据索引修改元素
————————————————

② . LinkedList

LinkedList是使用双向链表实现的,在列表中插入和删除速度快,但是查找需要遍历整个链表,速度较慢。使用LinkedList可以实现很多队列、栈的数据结构

适用场景:
1.你需要通过循环迭代来访问列表中的某些元素。
2.需要频繁的在列表开头、中间、末尾等位置进行添加和删除元素操作

常用方法:
————————————————
add():添加元素
addFirst():在头部添加元素
addLast:在尾部添加元素
addAll():将集合中的所有元素添加到LilnkedList中
clear():清空元素
contains():判断元素是否在LilnkedList中
get():根据索引获取元素
getFirst():获取头部元素
getLast():获取尾部元素
remove():根据索引删除元素
removeFirst():删除头部元素
removeLast():删除尾部元素
size():返回LilnkedList大小
set():根据索引修改元素
————————————————

③ . Vector

Vector是一个已经被弃用的类,因为他是线程同步的,而我们平时使用的时候都是非同步的,使用同步的坏处就是会在一个记录上加锁,防止多个程序访问同一条数据导致数据不同步。这样会导致访问速度变慢。

2. Queue队列

队列是一个满足“先进先出”的数据结构,包含两种 LinkedList,PriorityQueue

①. LinkedList

LinkedList提供了方法支持队列操作,并且实现了Queue接口,所以LinkedList是队列的一种实现,可以通过LinkedList向上转型为Queue。

②. PriorityQueue

PriorityQueue是优先级队列

3. Set集合

集合中的元素不可以重复,包含HashSet,TreeSet,HashSet三种实现

①. HashSet

HashSet 基于 HashMap 来实现的,是一个不允许有重复元素的集合。
HashSet 允许有 null 值。
HashSet 是无序的,即不会记录插入的顺序。
HashSet 不是线程安全的, 如果多个线程尝试同时修改 HashSet,则最终结果是不确定的。 您必须在多线程访问时实现同步对 HashSet 的并发访问。
HashSet 实现了 Set 接口。

常用方法
————————————————
add():添加元素
addAll():将集合中的所有元素添加到HashSet中
clear():清空元素
contains():判断元素是否在HashSet中
remove():根据索引删除元素
size():返回HashSet大小
————————————————

②. TreeSet

TreeSet底层使用的是红黑树。

二. Map

Map是使用键值对存储的一种结构,有HashMap,TreeMap,Hashtable三种集合实现

Map集合的特点:
1.Map是一个双列集合,一个元素包含两个值(一个key,一个value)

2.Map集合中的元素,key和value的数据类型可以相同,也可以不同

3.Map中的元素,key不允许重复,value可以重复

4.Map里的key和value是一一对应的。

HashMap和Hashtable的区别:
在这里插入图片描述

1. HashMap

HashMap更适合查找、删除、插入。
HashMap 是一个散列表,它存储的内容是键值对(key-value)映射。
HashMap 实现了 Map 接口,根据键的 HashCode 值存储数据,具有很快的访问速度,最多允许一条记录的键为 null,不支持线程同步。
HashMap 是无序的,即不会记录插入的顺序。
HashMap 继承于AbstractMap,实现了 Map、Cloneable、java.io.Serializable 接口。

常用方法
————————————————
clear():清空HashMap
size():获取大小
put():添加键值对
putAll():将所有键值对添加到HashMap中
containKey():是否包含key
containValue():是否包含value
get():根据key获取value
keySet():获取key的集合
values():获取所有value
————————————————

2.TreeMap

TreeMap更适合遍历,最大的特点是遍历时是有顺序的,根据key的排序规则来
TreeMap是一个基于key有序的key value散列表。
map根据其键的自然顺序排序,或者根据map创建时提供的Comparator排序
不是线程安全的
key 不可以存入null
底层是基于红黑树实现的

3. Hashtable

Hashtable 也是一个散列表,它存储的内容是键值对(key-value)映射
Hashtable:底层也是哈希表,是同步的,是一个单线程结合,是线程安全的集合,速度慢

Hashtable:不能存储null键,null值

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

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

相关文章

探索区块链世界:赋能创新,揭示区块链媒体发稿的影响力-世媒讯

区块链,这个由“区块”和“链”组成的概念,可能在您眼中充满神秘和复杂,但其实甚至无所不在,它正静悄悄地改变着我们日常生活的方方面面,从金融到媒体,从医疗到教育。 我们来揭开区块链的神秘面纱。区块链…

VRRP基础

1.基本概念 VRRP(Virtual Router Redundancy protocol,虚拟路由冗余协议) VRRP能够在不改变组网的情况下,将多台路由器虚拟成一个虚拟路由器,通过配置虚拟路由器的IP地址为默认网关,实现网关的备份。 VRRP协议版本为VRRPv2&…

Java多线程基础

Java多线程 文章目录 Java多线程一、线程介绍及相关概念二、创建和启动线程2.1 Thread类的常用结构2.2 创建线程法1:继承Thread类(分配线程对象)2.3 创建线程法2:实现Runnable接口(创建线程的目标对象)2.4 …

揭示C++设计模式中的实现结构及应用——行为型设计模式

简介 行为型模式(Behavioral Pattern)是对在不同的对象之间划分责任和算法的抽象化。 行为型模式不仅仅关注类和对象的结构,而且重点关注它们之间的相互作用。 通过行为型模式,可以更加清晰地划分类与对象的职责,并…

易错知识点(学习过程中不断记录)

快捷键专区: 注释:ctrl/ ctrlshift/ 保存:ctrls 调试: 知识点专区: 1基本数据类型 基本数据类型有四类:整型、浮点型、字符型、布尔型(Boolean), 分为八种&#xff…

AI图书推荐:《企业AI转型:如何在企业中部署ChatGPT?》

Jay R. Enterprise AI in the Cloud. A Practical Guide...ChatGPT Solutions (《企业AI转型:如何在企业中部署ChatGPT?》)是一本由Rabi Jay撰写、于2024年由John Wiley & Sons出版的书籍,主要为企业提供实施AI转型…

2024.4.28

有以下类&#xff0c;完成特殊成员函数 #include <iostream>using namespace std; class Person{string name;int* age; public:Person():name("zhangsan"),age(new int(18)){}Person(string name,int* age):name(name),age(new int(*age)){}~Person(){delete…

接口测试-笔记

Date 2024年4月23日21:19:51 Author KarrySmile 1. 前言 因为想更加规范地开发接口&#xff0c;同时让自己测试接口的时候更加高效&#xff0c;更好地写好接口文档。所以学习黑马的《接口自动化测试》课程。链接&#xff1a;黑马程序员软件测试接口自动化测试全套视频教程&a…

Redis运维篇-快速面试笔记(速成版)

文章目录 1. Redis的持久化1.1 RDB&#xff08;快照模式&#xff09;1.2 AOF 模式 2. Redis主从模型&#xff08;高可用&#xff09;2.1 Redis的主从复制2.2 Redis拓扑结构 3. Redis集群模式&#xff08;高并发&#xff09;3.1 Redis的Slots3.2 集群模式的常用命令3.3 多主多从…

STL_List与萃取

List 参考文章: https://blog.csdn.net/weixin_45389639/article/details/121618243 List源码 List中节点的定义&#xff1a; list是双向列表&#xff0c;所以其中节点需要包含指向前一节点和后一节点的指针&#xff0c; data是节点中存储的数据类型 template <class _Tp&g…

北京车展“第一枪”:长安汽车发布全球首款量产可变新汽车

4月25日&#xff0c;万众瞩目的2024北京国际汽车展览会在中国国际展览中心如期而至。作为中国乃至全球汽车行业的盛宴&#xff0c;本次车展也吸引了无数业内人士的高度关注。 此次北京车展以“新时代 新汽车”为主题&#xff0c;汇聚了1500余家主流车企及零部件制造商&#xff…

【R语言】对EXCEL多行或多列数据合并成一行或一列

对于很多行或很多列数据合并成一行或一列数据&#xff0c;手动是非常麻烦的&#xff0c;尤其当行列数无穷大&#xff0c;根本无法手动处理&#xff0c;在这里价绍一种解决办法&#xff1a;运行R语言&#xff0c;对数据的快速合并。 这里一多列合并成一列为例&#xff08;如果是…

Linux基本指令(2)

目录 mv指令&#xff1a; cat&#xff1a; more指令&#xff1a; less指令&#xff1a; head指令&#xff1a; tail指令&#xff1a; mv指令&#xff1a; 说明&#xff1a; mv命令是move的缩写&#xff0c;可以用来移动文件或者文件改名(move(rename)files),是linux系统下…

(二十一)C++自制植物大战僵尸游戏僵尸游戏关卡结束数据处理

植物大战僵尸游戏开发教程专栏地址http://t.csdnimg.cn/8UFMs 文件位置 代码实现的文件在Class\Scenes\GameScene文件夹中,如下图所示。 GameEndLayer.h class GSGameEndLayer :public LayerColor { public:CREATE_FUNC(GSGameEndLayer);void successfullEntry();void brea…

必应bing广告推广开户时间需要多久?

企业选择合适的平台进行广告投放成为了企业获取竞争优势的关键一步&#xff0c;必应Bing作为全球第二大搜索引擎&#xff0c;凭借其庞大的用户基础和精准的广告定位能力&#xff0c;成为了众多企业海外及国内市场推广的优选渠道。云衔科技以专业、高效的服务&#xff0c;成为企…

科技感十足特效源码

源码介绍 科技感十足特效源码&#xff0c;源码由HTMLCSSJS组成&#xff0c;记事本打开源码文件可以进行内容文字之类的修改&#xff0c;双击html文件可以本地运行效果&#xff0c;也可以上传到服务器里面 源码截图 源码下载 科技感十足特效源码

Linux:冯诺依曼体系结构、操作系统、初识进程

文章目录 1.冯诺依曼体系结构总线与数据传输通路为什么有内存这个部分计算机存储结构 2.操作系统(Operator System)2.1 概念2.2 设计OS的目的2.3 理解“管理”先描述再组织 2.4 用户使用系统调用和库函数&#xff08;lib&#xff09;概念 总结 3.初识进程3.1 基本事实与引入3.2…

ZYNQ之嵌入式开发05——串口中断、定时器中断、QSPI和SD卡读写测试实验

文章目录 UART串口中断实验定时器中断实验PS-XADC实验QSPI Flash读写测试SD卡读写文本文档 UART串口中断实验 UART控制器是一个全双工异步收发器&#xff0c;支持可编程的波特率和IO信号格式&#xff0c;具有独立的TX和RX数据路径&#xff0c;每个路径有一个64字节的FIFO&…

59岁郑浩南罕见与索爆女儿合体,曾自曝婚变暗示妻子出轨人财两空

59岁的郑浩南&#xff0c;拍过不少脍炙人口的电影&#xff0c;尤其是在《古惑仔》中饰演奸角司徒浩南&#xff0c;近作有《黑社会》的「加钱哥」&#xff0c;虽然将近「登六」&#xff0c;却保养得宣&#xff0c;操出一身健硕肌肉。 跟前妻鲍爱玲离婚后&#xff0c;郑浩南独自在…

即插即用Mamba模块全新突破!无缝集成,无痛涨点

Mamba入局图像复原了&#xff01;基于Mamba的图像复原基准模型MambaIR性能超越SwinIR&#xff0c;达成新SOTA&#xff01; MambaIR是一种引入通道注意力和局部增强的即插即用Mamba模块。这类高效、创新的模块在写论文时可以帮助我们简化模型的构建过程&#xff0c;通过将这些模…