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

Java中的集合相关知识汇总

总结

  1. Java集合 从数据结构可以分为:数组、Set、Map、队列、栈;
  2. 从多线程安全可以分为线程安全与非线程安全的集合
  3. 从关联关系可以总结如下(不包含多线程安全类):
    在这里插入图片描述

点线框表示接口; 折线框表示抽象类; 实线框表示实现类;

列表

列表是存储有序的元素,元素可以重复,并且可以存null

关键方法

// 在列表最后增加一个元素e
boolean add(E e);
// 根据传入的排序规则进行排序
default void sort(Comparator<? super E> c);
// 获取指定index的元素
E get(int index);
// 移除指定O 参数命中的第一个元素
boolean remove(Object o);

具体实现类与区别

  • ArrayList:线程不安全,查询速度快
  • Vector:线程安全,但速度慢(要实现线程安全建议CopyOnWriteArrayList
  • LinkedList: 链表实现,增删速度快
  • CopyOnWriteArrayList,多线程安全列表,原理是:通过“写时复制”(Copy-On-Write)的机制(并且使用ReentrantLock加锁)来实现线程安全

Set

元素是无序的,且唯一不可重复的,Set 的实现原理是Map的Key来实现的

关键方法

// 判断是否包括对象o
boolean contains(Object o);
// 往set中传入对象e,如果set原不包含e,则返回true
boolean add(E e);
// 移除对象o,如果Set包含对象o,则返回true
boolean remove(Object o);
// 取当前Set与集合c的交集,发生更改则为true
boolean retainAll(Collection<?> c);

具体实现类与区别

持续编写中

Map

队列

迭代器

废弃的Vertor和stack

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【Go】探索 Go 语言的内建函数 copy
  • nacos2.x作为配置中心和服务注册和发现以及springcloud使用
  • linux离线安装mysql8(单机版)
  • 信息安全工程师题
  • K8s 核心组件——API Server
  • Python 代码中的 yield 到底是什么鬼?
  • 【C#】Func、Action和Predicate
  • 操作系统:进程1
  • liteos定时器回调时间过长造成死机问题解决思路
  • 拓扑排序与有向无环图 -- Kahn算法和深度优先搜索
  • Redis - SpringDataRedis - RedisTemplate
  • QT Creator下载安装详细教程(保姆级教程)
  • NCRE3 2-1 网络总体设计基本方法
  • 如何使用 API 查看极狐GitLab 镜像仓库中的镜像?
  • Flutter Geocoding插件使用指南:简化地理编码与逆地理编码
  • [分享]iOS开发 - 实现UITableView Plain SectionView和table不停留一起滑动
  • 【402天】跃迁之路——程序员高效学习方法论探索系列(实验阶段159-2018.03.14)...
  • 2018天猫双11|这就是阿里云!不止有新技术,更有温暖的社会力量
  • E-HPC支持多队列管理和自动伸缩
  • HTTP中GET与POST的区别 99%的错误认识
  • Laravel核心解读--Facades
  • Node项目之评分系统(二)- 数据库设计
  • Object.assign方法不能实现深复制
  • webpack项目中使用grunt监听文件变动自动打包编译
  • 编写高质量JavaScript代码之并发
  • 解决iview多表头动态更改列元素发生的错误
  • 巧用 TypeScript (一)
  • 什么软件可以提取视频中的音频制作成手机铃声
  • 延迟脚本的方式
  • 容器镜像
  • ​iOS实时查看App运行日志
  • ​如何使用QGIS制作三维建筑
  • #define,static,const,三种常量的区别
  • #QT(TCP网络编程-服务端)
  • (07)Hive——窗口函数详解
  • (09)Hive——CTE 公共表达式
  • (19)夹钳(用于送货)
  • (C)一些题4
  • (floyd+补集) poj 3275
  • (iPhone/iPad开发)在UIWebView中自定义菜单栏
  • (Oracle)SQL优化基础(三):看懂执行计划顺序
  • (STM32笔记)九、RCC时钟树与时钟 第一部分
  • (ZT)一个美国文科博士的YardLife
  • (附源码)计算机毕业设计SSM在线影视购票系统
  • (官网安装) 基于CentOS 7安装MangoDB和MangoDB Shell
  • (七)Flink Watermark
  • (十三)Flink SQL
  • (转)Java socket中关闭IO流后,发生什么事?(以关闭输出流为例) .
  • (转)linux下的时间函数使用
  • ./include/caffe/util/cudnn.hpp: In function ‘const char* cudnnGetErrorString(cudnnStatus_t)’: ./incl
  • .aanva
  • .class文件转换.java_从一个class文件深入理解Java字节码结构
  • .net 4.0发布后不能正常显示图片问题
  • .Net 转战 Android 4.4 日常笔记(4)--按钮事件和国际化
  • .NET/C# 中你可以在代码中写多个 Main 函数,然后按需要随时切换