集合知识总结+泛型

集合知识概总

1.集合概念以及分类
2.常用集合特点
3.集合遍历
4.泛型知识

一、集合概念以及分类

1、集合介绍

1.1集合概念

Java中提供了一系列特殊的类统称为集合,像一个容器,专门用来存储Java对象(实际上是对象的引用,但习惯上成为对象)。

1.2集合特点

集合存储对象可以是任意引用类型、集合长度可变。

2、集合分类

2.1单列集合

Collection: 单列集合根接口。用于存储一系列符合规定泛型类型的元素。Collection有两个重要的子接口,分别是ListSet,其实还有一个Queue,只不过不常用。

  • 单列集合继承体系图:
    单列集合继承体系图

2.2 双列集合

Map是双列集合的根接口。用于存储具有键(key)和值(value)映射关系的元素。Map主要的实现接口有TreeMapHashMap

  • 双列集合集成体系图:

双列集合集成体系图
下面介绍具体集合类的特点,不再总结方法,方法查找Java API文档


二、List列表

1.List集合概念

java.util.List接口继承于Collection接口,是单列集合的重要分支之一,实现List的子类主要有ArrayListLinkedList比较常用,两者底层数据结构不同。

2.List集合特点

  1. List存取数据有序,即存入顺序和取出顺序一样;
  2. List有索引,并提供带索引的方法操作方法,如get (int index),索引也是从0开始;
  3. List中可以允许存储重复数据。

3.ArrayList

List 接口的大小可变数组的实现。实现了所有可选列表操作,并允许包括 null 在内的所有元素。除了实现 List 接口外,此类还提供一些方法来操作内部用来存储列表的数组的大小(容量)。是最常用的集合类!

  • 特点:
    1. ArrayList集合数据存储的结构是数组结构;
    2. 固定索引存储对应数据,查找块,增删慢;
    3. 不是线程同步。

4.LinkedList

List 接口的链接列表实现。实现所有可选的列表操作,并且允许所有元素(包括 null)。除了实现 List 接口外方法外,LinkedList 类还为在列表的开头及结尾 getremoveinsert 元素提供了统一的命名方法。此类实现 Deque 接口,为 addpoll 提供先进先出队列操作,以及其他堆栈和双端队列操作。

  • 特点:
    1. LinkedList集合数据存储的结构是双向链表;
    2. 有索引,但和数组索引还不一样,但使用与数组索引基本一样;
    3. 查找慢,增删块;
    4. 不是线程同步。

三、Set集合

1.Set集合概念

java.util.Set接口同样继承于Collection接口,它与Collection接口中的方法基本一致,并没有``Collection接口对进行功能上扩充,只是比Collection接口更加严格。实现Set接口的子类主要有HashSetTreeSet(内部采用平衡二叉树来存储数据,较复杂,可另百度了解)以及HashSet的子类LinkedHashSet`。

2. Set特点

  1. Set集合存取可能有序(LinkedHashSet),也可能无序(HashSet);
  2. Set集合没有索引;
  3. Set集合不允许存储重复数据。

3. HashSet

此类实现 Set 接口,由哈希表(实际上是一个 HashMap 实例)支持。它不保证 set 的迭代顺序;特别是它不保证该顺序恒久不变。此类允许使用 null 元素。 保证元素唯一性的方式依赖于:hashCodeequals方法。

  • 特点:

    1. HashSet的底层实现就是HashMap哈希表
    2. 无序存储,没有索引;
    3. 不能存储重复数据;
    4. 由于HashSet存储纯数字或字符时,由于其hashCode值顺序与现实顺序一致,所以会自动排序!
    5. 要想存储自定义引用类型,可以重写hashCode()和equals()方法,自定义重复规则
    6. 不是线程同步。
  • 存储数据结构—哈希表:
    jdk8之前:数组+链表
    数组+链表

    jdk8之后:数组+链表+红黑树
    (当链表长度超过阈值(8)时,将链表转换为红黑树,这样大大减少了查

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值