集合框架基础理解

概述

  1. Java集合框架为程序员提供了预先包装的数据结构和算法来操纵他们,放在java.util包中,都是泛型类,使用时需要声明元素类型。

  2. 集合是一个对象,可容纳其他对象的引用。集合接口声明对每一种类型的集合可以执行的操作。

  3. 任何对象加入集合类后,自动转变为Object类型,所以在取出的时候,需要进行强制类型转换。

  4. Java集合框架主要包括两种类型的容器:

    • 集合(Collection),用于存储一个元素集合。
    • 图(Map),用于存储“键/值”对映射。
  5. 常用集合的三大类:List、Set、Map

  6. 集合有内置工具类:Iterator迭代器、Comparator比较器

集合的分类

  1. List
    线性表,有序地存放元素,元素可重复。构造示例:
    List<String> list01 = new LinkedList<String>();
    List<String> list02 = new ArrayList<String>();

  2. Set
    无序集合,无序地存放元素,且元素不重复。
    HashSet<String> set = new HashSet<String>();

  3. Map
    “键/值”映射的集合,无序,键唯一,值不唯一,键和值的类型可以不相同。构造示例:
    HashMap<Integer, String> map = new HashMap<Integer, String>();
    Map<Integer, String> map = Map.of(1, "dog", 2, "cat")

  4. Queue (本文不讨论)
    队列,无序,可重复,先入先出。

  • Set和List的区别
    1. Set 接口实例存储的是无序的,不重复的数据。List 接口实例存储的是有序的,可以重复的元素。

    2. Set检索效率低下,删除和插入效率高,插入和删除不会引起元素位置改变 (实现类有HashSet,TreeSet)。

    3. List和数组类似,可以动态增长,根据实际存储的数据的长度自动增长List的长度。查找元素效率高,插入删除效率低,因为会引起其他元素位置改变 (实现类有ArrayList,LinkedList,Vector) 。

底层数据结构的分类

  1. Array 顺序表(数组)

  2. Link 链表

  3. Hash 哈希函数散列表

  4. Tree 排序树

实现类

  • 下图是常用集合类和接口的继承关系,内部方法请查看帮助文档。

  • 以下情况使用 ArrayList :

    • 频繁访问列表中的某一个元素。
    • 只需要在列表末尾进行添加和删除元素操作。
  • 以下情况使用 LinkedList :

    • 你需要通过循环迭代来访问列表中的某些元素。
    • 需要频繁的在列表开头、中间、末尾等位置进行添加和删除元素操作。
posted @ 2021-08-22 16:18  DvLopr_Jarjack  阅读(56)  评论(0)    收藏  举报