Java真的不难(十六)集合(1)

集合Set(一)

因为集合内容比较多,所以将集合分为两章写,这一章主要介绍理论的一些知识,祝大家学习愉快~~~

什么是集合?
比如我们去买超市买很多东西,我们不可能拿一样就去收银台,我们可能是先放到购物车内,然后再统一处理,所以购物车相当于一个容器,可以装很多东西,在Java中的集合也是相当于一个容器,可以装很多数据。

集合继承关系图:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

但是这张图太复杂了,我们看一张简便的:
在这里插入图片描述

集合分为Collection和Map两种体系

一、Collection接口:

collection 接口有 3 种子类型集合: List、Set 和 Queue,再下面是一些抽象类,最后是具体实现类,常
用的有 ArrayList、LinkedList、HashSet等(常用的几类)

Queue这个接口平时不常用,这里就不进行介绍,主要介绍ArrayList和Set:
ArrayList储存有序并且可以重复的对象
Set储存无序并且不可以重复的对象

List分为ArrayList和LinkedList:
ArrayLis:底层是数组结构,储存有序并且可以重复的对象
LinkedList:底层是链表结构,储存有序并且可以重复的对象

Set下有HashSet这个实现类:

HashSet:存储不能重复的对象,如果重复了程序并不会出错,但是后面的内容会覆盖前面的重复的

二、Map接口下分为HashMap和TreeMap:

注意:Map类型的集合是以键值对的形式来储存(Key:Value),保持具有映射关系的数据,因此Map集合用来保存无序的 键值对形式的值。根据键key来获取到对应的值。学过Python的同学肯定知道字典,没错,Map的格式就是和Python中的字典一致,比如:

{red=红色, green=绿色, yellow=黄色}

HashSet的特点:

  1. 无序
  2. HashSet是以Hash算法来记录再内存中无序存储的对象的,速度更快
  3. .HashSet不是线程同步的,非线程安全的
  4. .HashSet可以存储null

Map分为:

  1. HashMap
  2. LinkedHashMap
  3. HashTable[
  4. ConcurrentHashMap
  5. EnumMap
  6. TreeMap

LinkedHashMap:
LinkedHashMap是以链表式存储的HashMap,并且是以Hash算法来获取hashcode的值来获取内存中的数 据,存储的顺序和读取的顺序一致。

HashTable
HashMap和HashTable的作用一样,都是无序的键值对形式存储,HashTable考虑线程安全,HashMap不考 虑线程安全。 凡是线程安全的效率没有非线程安全的高。

ConcurrentHashMap
也是和HashMap线程一样,但是它考虑线程安全。HashTable是采用给当前线程加锁实现线程安全, ConcurrentHashMap是采用分段锁机制来实现线程安全。

EnumMap
专门用来存储枚举的Map集合

TreeMap:
TreetSet是SortSet接口的实现类,TreeSet可以保证元素处于排序状态再保存。它采用的是红黑树算法数 据结构来存储集合元素。TreeSet支持两种排序:

  • 自然排序和定制排序
  • 默认采用自然排序(在集合第二章介绍)

注意:如果是存储大量的数据,我们一般是不会用Map去存储。Map一般用于存储小量并且可以无序的键值对存储的数据。比如登录页面的用户名、密码等等。

集合总结:

  1. 集合是用于存储对象并且可以无限扩容,可以以有序、无序、键值对形式来存储对象
  2. List接口下都是存储有序的可重复的元素集合,ArrayList是以数组形式存储,LinkedList以链表式存 储
  3. 凡是以LinkedXXX都是双向链表式存储的集合,都是有序并按插入的顺序存储
  4. 凡式以HashXXX是以哈希算法存储,无序不可重复,获取速度快
  5. 凡是TreeXXX都是以红黑树算法排序后再存储,分自然排序和定制排序
  6. 集合中插入的值都是引用类型,它会将基本类型自动装箱成包装类型再存储到集合中

Collections工具类:

注意:不要和Collection搞错咯,这个是加了个s,是一个工具类,它包含有各种有关集合操作的静态多态方法。此类不能实例化,集合可以使用 Collections来对数据进行排序等等很多方法,具体可看官方文档:

https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Collections.html

集合的文字内容比较多,类型也比较多,容易混淆,小应学长将在下一章对常见的集合类型进行代码演示。
在这里插入图片描述

  • 8
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

热爱飞行的小应学长

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值