单列集合Collection、list、set

55 篇文章 1 订阅
订阅专栏
45 篇文章 1 订阅
订阅专栏

目录

一、collection

二、list集合

1、ArrayList集合底层原理

2、LinkedList集合

三、set系列集合

1、Set集合的实现类

2、HashSet底层原理

3、LinkedHashSet底层原理

4、TreeSet的特点

5、如何使用好集合


一、collection

collection是单列集合的顶层接口,他的功能是全部单列集合都可以继承使用的。

collection常用方法

方法名说明
public boolean add(E e)把给定的对象添加到当前集合中
public void clear()清空集合中所有的元素
public boolean remove(E e)把给定的对象在当前集合中删除
public boolean contains(object obj)判断当前集合中是否包含给定的对象
public boolean isEmpty()判断当前集合是否为空
public int size()返回集合中元素的个数/集合的长度

 

二、list集合

特点:

1、有序:存和取的元素顺序一致有索引

2、可以通过索引操作元素可重复

3、存储的元素可以重复

List集合的特有方法

collection的方法List都继承了

List集合因为有索引,所以多了很多索引操作的方法。

方法名说明
void add(int index,E element)在此集合中的指定位置插入指定的元素
E remove(int index)删除指定索引处的元素,返回被删除的元素
E set(int index,E element)修改指定索引处的元素,返回被修改的元素
E get(int index)返回指定索引处的元素

1、ArrayList集合底层原理

1、利用空参创建的集合,在底层创建一个默认长度为10的数组

2、添加第一个元素时,底层会创建一个新的长度为10的数组,存满时会扩容1.5倍

3、如果一次添加多个元素,1.5倍还放不下,则新创建数组的长度以实际为准

2、LinkedList集合

底层数据结构是双链表,查询慢,首尾操作的速度是极快的,所以多了很多首尾操作的特有API。

特有方法说明
public void addFirst(E e)在该列表开头插入指定的元素
public void addLast(E e)将指定的元素追加到此列表的末尾
public E getFirst()返回此列表中的第一个元素
public E getLast()返回此列表中的最后一个元素
public E removeFirst()从此列表中删除并返回第一个元素
public E removeLast()从此列表中删除并返回最后一个元素

三、set系列集合

特点:

1、无序:存取顺序不一致

2、不重复:可以去除重复

3、无索引:没有带索引的方法,所以不能使用普通for循环遍历,也不能通过索引来获取元素

1、Set集合的实现类

HashSet :无序、不重复、无索引

LinkedHashSet:有序、不重复、无索引

TreeSet:可排序、不重复、无索引

Set接口中的方法上基本上与collection的API一致。

2、HashSet底层原理

HashSet集合底层采取哈希表存储数据

哈希表是一种对于增删改查数据性能都较好的结构

JDK8以后,当链表长度超过8,而且数组长度大于等于64时,自动转换为红黑树

如果集合中存储的是自定义对象,必须要重写hashCode和equals方法

JDK8以前:新元素存入数组,老元素挂在新元素下面

JDK8以后:新元素直接挂在老元素下面

哈希表组成

JDK8之前:数组+链表

JDK8开始:数组+链表+红黑树

哈希值

根据hashCode方法算出来的int类型的整数

该方法定义在Object类中,所有对象都可以调用,默认使用地址值进行计算

一般情况下,会重写hashcode方法,利用对象内部的属性值计算哈希值

对象的哈希值特点

如果没有重写hashCode方法,不同对象计算出的哈希值是不同的

如果已经重写hashcode方法,不同的对象只要属性值相同,计算出的哈希值就是一样的

在小部分情况下,不同的属性值或者不同的地址值计算出来的哈希值也有可能一样。(哈希碰撞)

3、LinkedHashSet底层原理

有序、不重复、无索引。

这里的有序指的是保证存储和取出的元素顺序一致

原理:底层数据结构是依然哈希表,只是每个元素又额外的多了一个双链表的机制记录存储的顺

序。

1. LinkedHashSet集合的特点和原理是怎么样的?

有序、不重复、无索引

底层基于哈希表,使用双链表记录添加顺序

2.在以后如果要数据去重,我们使用哪个?

默认使用HashSet

如果要求去重且存取有序,才使用LinkedHashSet

4、TreeSet的特点

不重复、无索引、可排序

可排序:按照元素的默认规则(有小到大)排序。

TreeSet集合底层是基于红黑树的数据结构实现排序的,增删改查性能都较好。

TreeSet集合默认的规则

对于数值类型:Integer , Double,默认按照从小到大的顺序进行排序。

对于字符、字符串类型:按照字符在ASCII码表中的数字升序进行排序。

TreeSet的两种比较方式

方式一:默认排序/自然排序:Javabean类实现Comparable接口指定比较规则

方式二:比较器排序:创建TreeSet对象时候,传递比较器Comparator指定规则

使用原则:默认使用第一种,如果第一种不能满足当前需求,就使用第二种

方法返回值的特点

负数:表示当前要添加的元素是小的,存左边

正数:表示当前要添加的元素是大的,存右边

0:表示当前要添加的元素已经存在,舍弃

5、如何使用好集合

1.如果想要集合中的元素可重复

用ArrayList集合,基于数组的。(用的最多)

2.如果想要集合中的元素可重复,而且当前的增删操作明显多于查询

用LinkedList集合,基于链表的。

3.如果想对集合中的元素去重

用HashSet集合,基于哈希表的。(用的最多)

4.如果想对集合中的元素去重,而且保证存取顺序

用LinkedHashSet集合,基于哈希表和双链表,效率低于HashSet。

5.如果想对集合中的元素进行排序

用Treeset集合,基于红黑树。后续也可以用List集合实现排序。


注:总结来自于哔哩哔哩java视频、从入门到起飞尼古拉斯阿玮老师


 


 


 

day05-CollectionList、泛型、数据结构
又帅又能打的大雄
01-10 269
Collection单列集合List(),以及遍历方式 知识点-- 单列集合常用的继承体系 讲解: Collection单列集合的根接口,用于存储一系列符合某种规则的元素,它有两个重要的子接口,分别是java.util.Listjava.util.Set。其中,List的特点是元素有序、元素可重复 ; Set的特点是元素不可重复。List接口的主要实现java.util.ArrayL...
单列集合Set集合以及各种实现
黑妖问路的博客
04-19 619
Collection单列集合之子接口Set接口以及各种实现 Set集合
Arrays.asList() 和 Collections.singletonList()
allway2的博客
10-30 1814
1. 概述是我们使用Java时常用的集合型。众所周知,我们可以轻松地。例如,当我们想要初始化一个只有一个元素的List时,我们可以使用方法。在本教程中,我们将讨论这两种方法之间的差异。然后,为简单起见,我们将使用单元测试断言来验证某些操作的行为是否符合预期。2.方法首先,。任何结构更改都将引发,例如,向列表中添加新元素或从列表中删除元素。如果我们试一试,测试就会通过。在上面的代码中,我们使用来验证当我们尝试向列表中添加新元素时是否抛出。即使我们不能在列表中调用add() 或。
Java---Collection单列集合详解
gaoqiandr的博客
11-15 952
对于Java中关于单列集合的基本知识,单列集合简单点来说就是Java中储存数据的容器,增删改查都很方便,不需要自己去想,本文就是对该知识点的基本讲解
单列集合(Collection,List,Set集合的详细介绍)
naoguoteng的博客
05-19 2073
一.集合整体的体系1.Collection集合体系的相关介绍2.单列集合的工具Collections3.Collection接口和Conllections工具的区别 二.集合中的根接口:Collection接口1.Collection接口中的方法2.遍历集合(用根接口的迭代器iterator();)3.集合与数组的互转 集合转换为数组:数组转换为集合:(asList()) 三.Collection的子接口List接口 四 .LIst接口的实现 五.Collection的子接口Set接口中的实现
单列集合Collection实现ArrayList
qq_59088953的博客
01-02 512
单列集合ArrayList集合的实例化、添加、删除、遍历、排序
单列集合Collection-双列集合Map
weixin_64650214的博客
09-30 1200
集合的简单使用
Java集合进阶之Collection单列集合List
乔巴俊儿~~的博客
10-30 541
目录 前言 集合概述 Collection集合 概述 常用方法 遍历(迭代器) 并发修改异常 List集合 概述 特点以及特有方法 列表迭代器 三种遍历方法 LinkedList集合的特有功能 总结 前言 “集合”,顾名思义,就是把一组元素放在一起,集合便相当于一种容器,把这些数据元素保存起来。在Java语言中,集合体系分布较广,它大致可分为ListSet、Queue和Map四种体系。今天我主要介绍单列集合Collection以及它的子接口List集合(A...
java集合CollectionListSet详解
三筒记的博客
08-22 627
java高级之集合 文章目录java高级之集合概述集合 VS 数组数组集合整体概述Collection接口常用方法迭代器迭代器中的方法源码简单分析循环List接口概述常用方法实现:ArrayList实现:LinkedList实现:VectorList接口总结Set接口概述实现:HashSet实现:LinkedHashSet实现:TreeSetSet接口总结 概述 万事万物皆对象,我们可以使用数组来存储对象但存在一些弊端。 集合就像是一种java容器,可以动态的存储多个对象,可以把它理解为是动态
JavaCollections工具常用的函数demo,List,Map,Set
qq_38112624的博客
03-21 1058
JavaCollections工具常用的函数demo,List,Map,Set 代码如下,注释简单介绍了函数功能,可通过查看注释查找是否有需要的函数demo,代码可直接跑
集合 - 单列集合(Collection)
reallllbj的博客
03-31 2062
文章目录二. 集合1.单列集合1.1 集合概述1.2 集合框架1.3 Collection 常用功能2. List接口介绍2.1. ArrayList2.2 LinkedList集合3. set集合3.1 HashSet集合介绍3.1.1LinkedHashSet集合3.2. Collections:操作集合的工具 二. 集合 1.单列集合 1.1 集合概述 集合集合java中提供的一...
单双列集合
lin894542913的博客
08-09 3347
Collection单列集合顶层接口) 一、Collection接口 1、集合与数组的特点 集合:a、长度可变;b、只能储存引用数据型;c、同一个集合中可以存储多种数据型 数组:a、长度不可变;b、可以存储基本数据型和引用数据型;c、同一个数组只能存储一种数据型。 2、集合的体系结构图 a、单例集合体系图 (顶层)Collection(接口)---List(接口)
单列集合List集合
zs_66666的博客
12-29 488
Collection单列集合的根接口,用于存储符合某种规则的元素。部分关系结构图如下: List集合中允许出现重复的元素,所有元素是以一种线性方式进行存储的,在程序中可以通过索引来访问集合中的指定元素。还有一个特点就是元素有序,即元素的存入顺序和取出顺序一致。即List集合元素时有序可重复的。 ①ArrayList抽象:此提供 List 接口的骨干实现,以最大限度地减少实现“随机访问”数...
单列集合
ITranhui的博客
06-17 1757
Collection集合(接口) 概述: 单列集合:顶层集合Collection接口 List集合元素有索引,元素存取有序,并且元素可以重复 ArrayList 最常见 LinkedList Vector Set集合元素无索引,元素存取无序,并且元素不可以重复 HashSet LinkedHashSet TreeSet 双列集合:顶层集合Map HashMap 最常见 ...
Collections.singletonList方法的使用
二八开的博客
10-16 3935
概述 这个方法主要用于只有一个元素的优化,减少内存分配,无需分配额外的内存,可以从SingletonList内部看得出来,由于只有一个element,因此可以做到内存分配最小化,相比之下ArrayList的DEFAULT_CAPACITY=10个。 源码 private static class SingletonList<E> extends AbstractList<E> implements RandomAccess, Serializabl
Collection 单列集合
无关痛痒
08-04 298
1.概述 集合概述: 集合集合java中提供的一种容器,可以用来存储多个数据。集合和数组既然都是容器,它们有啥区别呢? 数组的长度是固定的。集合的长度是可变的。 数组中存储的是同一型的元素,可以存储基本数据型值。集合存储的都是对象。而且对象的型可以不一致。在开发中一般当对象多的时候,使用集合进行存储。 Collection单列集合的根接口,用于存储一系列符合某种规则的元素,它有两个重要的子接口,分别是java.util.Listjava.util....
Java List单例表: Collections::singletonList VS List::of
沛哥儿的专栏
04-27 1676
Java中,怎样将一个型T的单个对象,转换为一单例的List<T>? 一种最简单的方法,创建并实例化为一个ArraList或者LinkedList的对象。然后把它Add进去。 但是,你会发现这种做法缺少了编码的乐趣,让人感觉没有追求。像我们这种有悟性的研发,就应该想着怎么用一行代码来搞定它。好消息是JavaSE提供了多个一行代码来解决这个问题的方法。 在这里,我们不讨论那种匿名函数的双括号的实现方式。因为看起来是使用了一行代码来创建和添加单个对象。但是它实际上是两行代码:一行来实例化List的子
【C++刷题】力扣-#121-买卖股票的最佳时机
最新发布
会写代码的饭桶
10-16 647
给定一个数组 prices,其中 prices[i] 表示第 i 天的股票价格。假设你可以在第 i 天买入并在第 j 天卖出股票(i ≤ j),设计一个算法来计算你所能获取的最大利润。注意你只能持有一股股票,并且你不能同时参与多笔交易(即在再次买入前必须卖出股票)。
165
原创
743
点赞
1266
收藏
492
粉丝
关注
私信
写文章

热门文章

  • linux系统查看jdk版本,路径及配置环境变量 20063
  • WebStorm安装教程 19983
  • 使用Nginx解决跨域问题 18478
  • Postman下载,安装,注册及登录教程 12895
  • jQuery操作css方法 12591

分类专栏

  • Springboot 16篇
  • vue 5篇
  • java I/O 3篇
  • RabbitMQ 8篇
  • Redis 19篇
  • Docker 6篇
  • SpringCloud 10篇
  • 虚拟机Linux 8篇
  • mybatis-plus 7篇
  • 开发语言 55篇
  • Nginx 4篇
  • SSM 8篇
  • Javaweb 3篇
  • Java 45篇
  • html 21篇
  • 数据库 8篇
  • mysql 10篇

最新评论

  • 使用VMware安装Centos6的步骤

    Zora_first: 到kdump的时候显示空间不足啥的,让我手动配置(但也没有让我配置东西)。然后我就继续往后进行,也成功了。会有啥影响吗?

  • 使用VMware安装Centos6的步骤

    Sophon、: 二、系统安装前准备 2 使用ISO镜像文件需要提前下载好吗

  • Xshell连接centOS7

    MOO96: 估计是 vim 指令

  • Linux系统安装mysql(rpm版)

    等不起了680: 百度网盘密码不对

  • Java读取Excel文件,导出Excel文件

    班德5119: 全是报错啊

最新文章

  • vue路由跳转页面
  • vue项目使用element ui
  • 创建vue项目
2024年16篇
2023年70篇
2022年81篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值

玻璃钢生产厂家广东自发光动物玻璃钢雕塑制作芜湖卡通玻璃钢雕塑厂家咨询客服外贸玻璃钢花盆温州广场玻璃钢雕塑聊城玻璃钢伟人像雕塑齐齐哈尔人物玻璃钢雕塑公司安庆卡通玻璃钢雕塑报价农场玻璃钢雕塑十五元宵节商场室内美陈深圳玻璃钢雕塑沙发耐用性好玻璃钢花盆商场美陈新年园林玻璃钢景观雕塑价格玻璃钢仿玉石雕塑图片成都玻璃钢海豚雕塑武汉玻璃钢浮雕房地产不锈钢雕塑浦东新区镜面玻璃钢雕塑贵州环保玻璃钢雕塑价位白银玻璃钢植物雕塑设计园林玻璃钢雕塑厂家供应虎门玻璃钢花盆花器重庆仿铜玻璃钢雕塑订做价格天津户外玻璃钢雕塑订做价格安徽景观玻璃钢雕塑方法玻璃钢孔子雕塑厂家报价商场卡通玻璃钢雕塑天津展会玻璃钢雕塑设计三门峡玻璃钢雕塑制作梅州发光小品玻璃钢雕塑定做修复玻璃钢雕塑用什么材料香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化