Java——集合详解1

 在编程时,可以使用数组来保存多个对象,但数组长度不可变化,一旦在初始化数组时指定了数组长度,这个数组长度就是不可变的。如果需要保存数量变化的数据,数组就有点无能为力了。
为了保存数量不确定的数据,Java 提供了集合类

一、集合的概述

1、集合是一个容器,是一个载体,可以一次容纳多个对象以及其他的数据类型

2、集合不能直接存储基本数据类型,也不能直接存储Java对象,集合当中存储的都是Java对象的内存地址

  • 注意:集合在Java中本身是一个容器,是一个对象。

  • 集合中任何时候存储的都是“引用”。。

3、Java中每一个不同的集合,底层都对应不同的数据结构。往不同的集合中存储元素,就等同于将数据放到了不同的数据结构当中;例如:

  • 往集合C1里面放数据,可能会存放到数组上了。

  • 往集合A里面放数据,可能会存放到二叉树上了。等等

4、所有的集合类和集合接口都在Java.util.*的包下

二、集合的继承结构图以及特点

注:在这里我主要是针对常见的集合类型

Java中的集合分两大类:

  • 一类是单个方式存储元素:该类集合的超级父接口是:java.util.Collection;

  • 一类是以键值对的方式存储元素:该类集合的超级父接口是:java.util.Map;

(一)单个方式存储元素(Collection)

1、继承结构图:

 2、特征:

public interface List<E>:

有序集合(也称为序列。 该接口的用户可以精确控制列表中每个元素的插入位置。 用户可以通过整数索引(列表中的位置)访问元素,并搜索列表中的元素。 (下标)有序可重复

  • 注意:这里的有序是指存进去什么顺序,取出来还是该顺序。。

public interface Set<E>:

不包含重复元素的集合。 更正式地说,集合不包含元素对e1e2 ,使得e1.equals(e2)和最多一个null元素。 正如其名称所暗示的,此接口模拟数学抽象。

  • 注意:无序不可重复,set集合中的元素没有下标

(二)以键值对的方式存储元素(java.util.Map;

1、继承结构图:

  2、特征:

1、Map集合和Collection集合没有关系

2、map集合是以key和value的这种键值对的方式存储元素。

3、key和value都是存储Java对象的内存地址。。

4、所有Map集合的key都是无序不可重复的。。和Set集合存储元素特点相同

 public class HashMap<K,V>:

基于哈希表的Map接口的实现。 此实现提供了所有可选的映射操作,并允许null值和null键。 ( HashMap类大致相当于Hashtable ,除了它是不同步的并且允许空值。)

是非线程安全的。。

  • 注意:HashMap集合在JDK8以后,如果哈希表单向链表中的元素超过8个,单向链表这种数据结构会变成二叉树或者红黑树这种数据结构。。当红黑树上的节点数小于6时,会把红黑树重新变成单向链表。。

  • HashMap集合的key和value允许出现null值;但是key只能有一个null值,否则会出现重复值,后面的会覆盖前面的。  

public class Hashtable<K,V> :(不常用)

该类实现了一个哈希表,它将键映射到值。 任何非null对象都可以用作键或值。是线程安全的。。

Hashtable集合初始化容量是11,扩容是原容量的2次方+1

它有一个子类:properties类继承了Hashtable类::

5、SortedMap接口进一步继承了Map接口

public interface SortedMap<K,V>:

SorteMap集合Key存储元素的特点:也是无序不可重复,但是放在SorteMap集合中的key部分的元素可以自动排序是自动按照大小顺序排序的。称为可排序的集合。。

 而TreeMap则是实现了Sorted Map接口的

三、在这里我画了一个自平衡二叉树的讲解图

 自平衡二叉树在后续的集合中将会用到:

下期讲解集合常用的各种方法。

 支持:🎁🎁🎁如果你觉得博主的文章的不错或者对你有帮助,可以点一个免费的关注支持一下博主,如果三连收藏支持就更好了吖,嘿嘿嘿,蟹蟹。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

-今非昔比°

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

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

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

打赏作者

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

抵扣说明:

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

余额充值