集合总结(Collection,List,Set,Map)(补充集合结构图的关系)

集合

  • 集合体系结构图
    • Collection集合
      • 概述
      • 常用方法
      • 遍历(迭代器)及代码演示
    • List集合
      • 概述(特点)
      • 方法
      • 概述
      • 遍历(三种遍历方式——迭代器,普通for,增强for)
      • List子集的特点和功能
    • Set集合
      • 1.特点
      • 哈希值
      • ①HashSet
      • ②LinkedHashSet集合
      • ③TreeSet集合
    • Map集合
      • **概述:**
      • 特点:
      • 常用方法
      • 获取方法
      • 遍历的两种方式:
  • 总结
  • 补充
    • 集合框架底层数据结构总结

集合总结(Collection,List,Set,Map)(补充集合结构图的关系)_第1张图片

集合体系结构图

集合总结(Collection,List,Set,Map)(补充集合结构图的关系)_第2张图片

Collection集合

概述

1.单例集合的顶层接口,它表示一组对象,这些对象也称为Collection的元素
2.JDK 不提供此接口的任何直接实现,它提供更具体的子接口(如Set和List)实现

常用方法

集合总结(Collection,List,Set,Map)(补充集合结构图的关系)_第3张图片

遍历(迭代器)及代码演示

在这里插入图片描述
在这里插入图片描述
代码演示:
集合总结(Collection,List,Set,Map)(补充集合结构图的关系)_第4张图片

List集合

概述(特点)

  • 有序集合
    允许出现重复的元素
    集合特点:①存储顺序一致 ②存储的元素可以重复 ③有索引

方法

集合总结(Collection,List,Set,Map)(补充集合结构图的关系)_第5张图片

概述

遍历(三种遍历方式——迭代器,普通for,增强for)

集合总结(Collection,List,Set,Map)(补充集合结构图的关系)_第6张图片

List子集的特点和功能

ArrayList集合——底层是数组结构实现,查询快、增删慢
LinkedList集合——底层是链表结构实现,查询慢、增删快

LinkedList集合的特有功能集合总结(Collection,List,Set,Map)(补充集合结构图的关系)_第7张图片

Set集合

1.特点

  • 元素存取无序
  • 没有索引,只能通过迭代器或者增强FOR来遍历
  • 不能存储重复元素

哈希值

  • 概念:JDK根据对象的地址或者字符串或者数字算出来的int类型的数值

  • 获取方法:Object类中的public int hashCode():返回对象的哈希码值

  • 哈希值的特点

  • 1.同一个对象多次调用hashCode()方法返回的哈希值是相同

  • 2.默认情况下,不同对象的哈希值是不同的。而重写hashCode()方法,可以实现让不同对象的哈希值相同

    代码演示:

    集合总结(Collection,List,Set,Map)(补充集合结构图的关系)_第8张图片
    哈希表:集合总结(Collection,List,Set,Map)(补充集合结构图的关系)_第9张图片

①HashSet

集合特点:

  • 1.底层是哈希表结构
  • 2.元素存储无序
  • 3.没有索引
  • 4.不能存储重复元素

HashSet集合保证元素唯一性源码分析图解**
集合总结(Collection,List,Set,Map)(补充集合结构图的关系)_第10张图片
HashSet学生遍历(重点:重写hashCode()和equals()方法,用增强FOR遍历)

集合总结(Collection,List,Set,Map)(补充集合结构图的关系)_第11张图片
集合总结(Collection,List,Set,Map)(补充集合结构图的关系)_第12张图片

②LinkedHashSet集合

特点

  • 哈希表和链表实现的Set接口,具有可预测的迭代次序

  • 存储有序

  • 没有重复元素

代码实现
集合总结(Collection,List,Set,Map)(补充集合结构图的关系)_第13张图片

③TreeSet集合

特点

  • 元素存储有序
  • 没有索引
  • 不能存储重复元素

1.自然排序Comparable(代码演示)
集合总结(Collection,List,Set,Map)(补充集合结构图的关系)_第14张图片
集合总结(Collection,List,Set,Map)(补充集合结构图的关系)_第15张图片

2.比较器排序Comparator的使用(代码演示)
集合总结(Collection,List,Set,Map)(补充集合结构图的关系)_第16张图片
集合总结(Collection,List,Set,Map)(补充集合结构图的关系)_第17张图片

Map集合

概述:

interface Map K:键的类型;V:值的类型

代码演示:
集合总结(Collection,List,Set,Map)(补充集合结构图的关系)_第18张图片

特点:

  • 1.键值对映射关系
    2.一个键对应一个值
    3.键不能重复,值可以重复
    4.元素存取无序

常用方法

集合总结(Collection,List,Set,Map)(补充集合结构图的关系)_第19张图片

获取方法

集合总结(Collection,List,Set,Map)(补充集合结构图的关系)_第20张图片

遍历的两种方式:

①键去获取值(代码演示)
集合总结(Collection,List,Set,Map)(补充集合结构图的关系)_第21张图片
②键值去获取键和值(代码演示)
集合总结(Collection,List,Set,Map)(补充集合结构图的关系)_第22张图片

总结

在学习集合中,需要注意单列集合(Collection)和双列(Map)集合的区别(区分它们的遍历方式,分清它们的特点以及代码的具体运用

补充

集合总结(Collection,List,Set,Map)(补充集合结构图的关系)_第23张图片
如图所示:图中,实线边框的是实现类,折线边框的是抽象类,而点线边框的是接口
1、List(有序、可重复)
List里存放的对象是有序的,同时也是可以重复的,List关注的是索引,拥有一系列和索引相关的方法,查询速度快。因为往list集合里插入或删除数据时,会伴随着后面数据的移动,所有插入删除数据速度慢。

2、Set(无序、不能重复)
Set里存放的对象是无序,不能重复的,集合中的对象不按特定的方式排序,只是简单地把对象加入集合中。

3、Map(键值对、键唯一、值不唯一)
Map集合中存储的是键值对,键不能重复,值可以重复。根据键得到值,对map集合遍历时先得到键的set集合,对set集合进行遍历,得到相应的值。
对比如下:
集合总结(Collection,List,Set,Map)(补充集合结构图的关系)_第24张图片

集合框架底层数据结构总结

Collection

1.List

  • Arraylist: Object数组
  • Vector: Object数组
  • LinkedList: 双向循环链表

2.Set

  • HashSet(无序,唯一): 基于 HashMap 实现的,底层采用 HashMap 来保存元素
  • LinkedHashSet: LinkedHashSet 继承与 HashSet,并且其内部是通过 LinkedHashMap
    来实现的。有点类似于我们之前说的LinkedHashMap 其内部是基于 Hashmap 实现一样,不过还是有一点点区别的。
  • TreeSet(有序,唯一): 红黑树(自平衡的排序二叉树

3.Map

  • HashMap:
    JDK1.8之前HashMap由数组+链表组成的,数组是HashMap的主体,链表则是主要为了解决哈希冲突而存在的(“拉链法”解决冲突).JDK1.8以后在解决哈希冲突时有了较大的变化,当链表长度大于阈值(默认为8)时,将链表转化为红黑树,以减少搜索时间

  • LinkedHashMap: LinkedHashMap 继承自
    HashMap,所以它的底层仍然是基于拉链式散列结构即由数组和链表或红黑树组成。另外,LinkedHashMap
    在上面结构的基础上,增加了一条双向链表,使得上面的结构可以保持键值对的插入顺序。同时通过对链表进行相应的操作,实现了访问顺序相关逻辑。详细可以查看:《LinkedHashMap 源码详细分析(JDK1.8)》

  • HashTable: 数组+链表组成的,数组是 HashMap 的主体,链表则是主要为了解决哈希冲突而存在的

  • TreeMap: 红黑树(自平衡的排序二叉树)
    集合总结(Collection,List,Set,Map)(补充集合结构图的关系)_第25张图片

你可能感兴趣的:(list,链表,数据结构,java)