黑马程序员——集合

MPU6050数据融合避坑指南:当欧拉角遇到万向节死锁,我们该如何处理? 本文深入探讨了MPU6050在姿态解算中遇到的欧拉角万向节死锁问题,提供了四元数解决方案及工程实践策略。通过分析死锁现象的本质,介绍四元数的优势与实现方法,并给出必须使用欧拉角时的三种应对方案,帮助开发者有效规避数据跳变和解算失效问题。 阅读详情

------- android培训、java培训、期待与您交流! ----------

学了集合 ,先根据这张图把头脑中的知识点梳理一下


一.集合的分类

Collection 一次存一个对象, 单列集合、

Collection是最基本的集合接口,一个Collection代表一组Object,即Collection的元素(Elements)。一些 Collection允许相同的元素而另一些不行。一些能排序而另一些不行。Java SDK不提供直接继承自Collection的类,Java SDK提供的类都是继承自Collection的“子接口”如List和Set。
  所有实现Collection接口的类都必须提供两个标准的构造函数:无参数的构造函数用于创建一个空的Collection,有一个 Collection参数的构造函数用于创建一个新的Collection,这个新的Collection与传入的Collection有相同的元素。后 一个构造函数允许用户复制一个Collection。
  如何遍历Collection中的每一个元素?不论Collection的实际类型如何,它都支持一个iterator()的方法,该方法返回一个迭代子,使用该迭代子即可逐一访问Collection中每一个元素。典型的用法如下:
    Iterator it = collection.iterator(); // 获得一个迭代子
    while(it.hasNext()) {
      Object obj = it.next(); // 得到下一个元素
    }
  由Collection接口派生的两个接口是List和Set。


ArrayList 数组实现, 查找快, 线程不安全

ArrayList实现了可变大小的数组。它允许所有元素,包括null。ArrayList没有同步。
size,isEmpty,get,set方法运行时间为常数。但是add方法开销为分摊的常数,添加n个元素需要O(n)的时间。其他的方法运行时间为线性。
  每个ArrayList实例都有一个容量(Capacity),即用于存储元素的数组的大小。这个容量可随着不断添加新元素而自动增加,但是增长算法 并没有定义。当需要插入大量元素时,在插入前可以调用ensureCapacity方法来增加ArrayList的容量以提高插入效率。
  和LinkedList一样,ArrayList也是非同步的(unsynchronized)。

LinkedList 链表实现, 增删快, 线程不安全

LinkedList实现了List接口,允许null元素。此外LinkedList提供额外的get,remove,insert方法在 LinkedList的首部或尾部。这些操作使LinkedList可被用作堆栈(stack),队列(queue)或双向队列(deque)。
  注意LinkedList没有同步方法。如果多个线程同时访问一个List,则必须自己实现访问同步。一种解决方法是在创建List时构造一个同步的List:
    List list = Collections.synchronizedList(new LinkedList(...));

Vector 数组实现, 线程安全

Vector非常类似ArrayList,但是Vector是同步的。由Vector创建的Iterator,虽然和 ArrayList创建的Iterator是同一接口,但是,因为Vector是同步的,当一个Iterator被创建而且正在被使用,另一个线程改变了 Vector的状态(例如,添加或删除了一些元素),这时调用Iterator的方法时将抛出 ConcurrentModificationException,因此必须捕获该异常。

Set   不可重复, 没索引,无序
HashSet 使用哈希算法去重复, 效率高, 但元素无序
TreeSet TreeSet是用排序的, 可以指定一个顺序, 对象存入之后会按照指定的顺序排列
LinkedHashSet HashSet的子类, 原理相同, 除了去重复之外还能保留存储顺序

二.HashSet(LinkedHashSet)
1.HashSet原理
我们使用Set集合都是需要去掉重复元素的, 如果在存储的时候逐个equals()比较, 效率较低
哈希算法提高了去重复的效率, 降低了使用equals()方法的次数
当HashSet调用add()方法存储对象的时候, 先调用对象的hashCode()方法得到一个哈希值, 然后在集合中查找是否有哈希值相同的对象
如果没有哈希值相同的对象就直接存入集合
如果有哈希值相同的对象, 就和哈希值相同的对象逐个进行equals()比较
比较结果为false就存入, true则不存
2.将自定义类的对象存入HashSet去重复
类中必须重写hashCode()和equals()方法
hashCode(): 属性相同的对象返回值必须相同, 属性不同的返回值尽量不同(提高效率)
equals(): 属性相同返回true, 属性不同返回false,返回false的时候存储

三.迭代(遍历)
1.List
a.普通for循环, 使用get()逐个获取
b.调用iterator()方法得到Iterator, 使用hasNext()和next()方法
c.增强for循环, 只要可以使用Iterator的类都可以用
d.Vector集合可以使用Enumeration的hasMoreElements()和nextElement()方法
2.Set
a.调用iterator()方法得到Iterator, 使用hasNext()和next()方法
b.增强for循环, 只要可以使用Iterator的类都可以用

四.TreeSet
1.特点
TreeSet是用来排序的, 可以指定一个顺序, 对象存入之后会按照指定的顺序排列
2.使用方式
a.自然顺序(Comparable)
TreeSet类的add()方法中会把存入的对象提升为Comparable类型
调用对象的compareTo()方法和集合中的对象比较
根据compareTo()方法返回的结果进行存储
b.比较器顺序(Comparator)
创建TreeSet的时候可以制定 一个Comparator
如果传入了Comparator的子类对象, 那么TreeSet就会按照比较器中的顺序排序
add()方法内部会自动调用Comparator接口中compare()方法排序
c.两种方式的区别
TreeSet构造函数什么都不传, 默认按照类中Comparable的顺序(没有就报错ClassCastException)
TreeSet如果传入Comparator, 就优先按照Comparator
重回童年的经典系列☀️| 【坦克大战3D版】游戏制作+解析 带你重回童年的经典系列——坦克大战3D版制作,感兴趣的可以看看呀~ 阅读详情

相关推荐

别再被SpringerLink虐了!手把手教你搞定LaTeX源文件提交(附正确文件顺序和类型选择)

本文详细解析了SpringerLink投稿系统中LaTeX源文件提交的常见问题与解决方案,包括文件打包、类型选择和顺序排列等关键步骤。通过实战经验,帮助科研人员避开隐形陷阱,一次性完成LaTeX提交,提升投稿效率。特别针对`.bst`和`.cls`文件的正确处理提供了专业指导。

weixin_42522964的博客 445

黑马程序员---集合类

-----------android培训、java培训、java学习型技术博客、期待与您交流!---------        集合类              首先我们来看一个集合的关系图                                   (因为是网上直接有的,我就不自己画了,浪费时间,嘿嘿)       为什么出现

哈哈哈的博客 830

OLLAMA_HOST环境变量设置全攻略:从127.0.0.1到局域网共享的完整配置

本文详细解析了OLLAMA_HOST环境变量的核心作用与配置方法,指导用户如何将Ollama服务从仅限本机访问(127.0.0.1)扩展到局域网共享。文章涵盖了macOS、Linux、Windows三大平台的实战配置步骤,并提供了安全加固、性能优化及常见故障排查方案,是解决多设备协作访问本地AI模型的完整指南。

weixin_28455801的博客 1904

探索Java集合的奥秘:黑马程序员的宝藏笔记

探索Java集合的奥秘:黑马程序员的宝藏笔记 【下载地址】黑马程序员Java学习笔记集合 本资源文件包含了黑马程序员的Java学习笔记,重点聚焦在集合部分。内容包括源代码示例、相关图片以及详细的学习笔记,旨在帮助读者深入理解Java中的集合框架 ...

gitblog_06508的博客 607

别再折腾老教程了!树莓派4B/5最新系统(Raspberry Pi OS Bookworm)红外遥控配置,用gpio-ir驱动一次成功

本文详细介绍了树莓派4B/5在最新Raspberry Pi OS Bookworm系统下配置红外遥控的完整指南,摒弃过时的lirc-rpi驱动,采用现代gpio-ir驱动方案。从硬件连接到软件配置,提供10分钟快速上手指南,涵盖驱动加载、信号测试、按键映射及高级应用场景,帮助用户高效完成红外遥控配置。

weixin_42520909的博客 442

FC游戏Hack实战:从零开始修改游戏数据

本文以《忍者神龟3》为例,详细介绍了从零开始进行FC游戏Hack的完整实战流程。通过使用FCEUX模拟器和调试器,结合“递减法”精准定位生命值内存地址,并利用十六进制编辑器修改关键指令,最终实现“无限生命”效果。文章旨在引导读者理解游戏数据修改的核心原理与操作技巧,重温经典的同时深入计算机程序运行机制。

weixin_28366353的博客 358

黑马程序员Java学习笔记——集合

黑马程序员Java学习笔记——集合 【下载地址】黑马程序员Java学习笔记集合 本资源文件包含了黑马程序员的Java学习笔记,重点聚焦在集合部分。内容包括源代码示例、相关图片以及详细的学习笔记,旨在帮助读者深入理解Java中的集合框架 ...

gitblog_06544的博客 625

非模式物种PySCENIC分析流程

外的物种想要做scenic分析的话, 可以使用同源基因转换后再进行分析, 将要分析的物种的gene Symbol转换为人、小鼠或者是果蝇的gene Symbol后进行分析。odiscus sinensis(中华鳖)的基因-细胞的矩阵,进行pyscenic分析的话,可参考以下示例。目前pyscenic分析支持的物种仅为人、小鼠和果蝇,其他物种暂时还没有相应的数据库,因。本教程基于Linux及服务。SCENIC转录因子分析。器中的Rstudio环境。例如我们有一个Pel。

weixin_47195452的博客 934

黑马程序员—集合

4 集合框架  Collection: |--List:有序(元素存入集合的顺序和取出的顺序一致),元素都有索引。元素可以重复。 |--Set:无序(存入和取出顺序有可能不一致),不可以存储重复元素。必须保证元素唯一性。 1,添加: add(object):添加一个元素 addAll(Collection) :添加一个集合中的所有元素。 2,删除: clear():将集合中的元素全

a5301426的博客 288

RT-DETR-R18 上下文信息融合:引入全局特征提升遮挡目标检测

"""轻量化全局特征提取器(2层Transformer编码器)"""# 特征投影层(将多尺度特征统一维度)# 轻量化Transformer编码器(分组卷积优化)# 全局特征池化(输出 [bs, hidden_dim])# local_features: 多尺度特征列表 [C3, C4, C5],各 [bs, c, h, w]# 统一投影至 hidden_dim 并展平为序列# Transformer编码全局上下文# 全局池化得到全局向量。

走向CTO的路上... 496

青少年C/C++软件编程(四级)等级考试真题及答案解析目录

3. 带通配符的字符串匹配。1. 怪盗基德的滑翔翼。3.最长公共子上升序列。4.宠物小精灵之收服。

长春高老师编程 3033

黑马程序员——Java集合

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------- 自学Java第八天笔记。本人是根据毕向东老师的JavaSE视频学习的。 Java集合 一.集合框架。 1.概念: 用于存储数据的容器。 2.特点: 集合只用于存储对象,集合长度是可变的,集合可以存储不同类型的对象。 3.集合和数组的

zhaofengshiwo的专栏 506

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

黑马程序员 集合

-----------黑马程序员 IOS培训、Android培训、Java培训、期待与您交流---------------- #import <Foundation/Foundation.h> int main() { // oc数组只能存放oc对象,不能存放非oc对象,数组是有序的 // oc数组创建 // nil为数组的结束标志,所以不能存放nil NSArra...

weixin_30596165的博客 96

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

黑马程序员——集合类

集合类

305

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

黑马程序员--集合

------- android培训、java培训、期待与您交流! ---------- 1:集合  (1)java是一种面向对象语言,如果我们要针对多个对象进行操作,就必须对多个对象进行存储。     而对多个元素进行存储,前面我们学习过数组,数组的弊端,长度固定。这样,数组将不能     满足变化的要求。所以,java就提供了集合供我们使用。  (2)集合的特点:   A:长度可以发

大大男孩 716

黑马程序员——java基础之集合

java 集合框架: 面向对象语言对事物的体现都是以对象的形式,所以为了方便对多个对象的操作,就对对象进行存储,集合就是存储对象最常用的一种方式

back 644

黑马程序员——TreeSet集合

------- android培训、java培训、期待与您交流! ---------- TreeSet TreeSet是集合框架体系中的一员,是存储对象的一种方式,长度可变,可存储不同类型的对象。元素是无序的,不可重复。底层数据结构是二叉树,可以用TreeSet对集合中的元素进行排序。 P.S.  集合存的都是对象。存储基本数据类型值,会自动装箱封装成对应的基本数据类型对象包装类对象

dynasty110的博客 485

黑马程序员——java的集合类

------- android培训、java培训、期待与您交流! ---------- 前言:通过观看毕向东老师的java基础视频,查漏补缺,将一些自己掌握的还不牢固的知识写出来,希望和大家交流分享。 1.集合框架 1.java集合框架的构成,由于数据结构的不同,有不同的集合,也叫容器。如下图: 2.集合类的出现原因:为了方便对多个对象的操作,就对对象进行存储,集合就是存储对象最常用的

hgdswj的博客 670

【黑马程序员】Java集合类

1. Java集合类也成Java容器类,是Java中实用的工具,实现了一些常用的数据结构和方法,方便开发者调用。与容器类中只能存放对象(实际上是对象的引用)。   2.Set集合     Set集合类似于一个罐子,放进去的元素是无序的。Set集合类似于Collection但Set集合不能存放相同的元素。    Set判断两个元素是否相同不是通过 == 而是 equals() 方法。  

whight的专栏 605

黑马程序员-集合与泛型集合

---------------------- ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ---------------------- 数组和集合都是存放大量相同的数据 在数组中,想要对数组成员进行处理很麻烦,特别是插入、删除、增加、清空、排序等工作。但是集合对此作出了弥补。 集合具有很强的通用性,所以常用的方法的方法名应该记住 集合

yaofch的专栏 721
上一篇: 黑马程序员——多线程
下一篇: 黑马程序员——IO流
however_
博客等级 码龄12年 48粉丝 13原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值