Java集合框架详解

目录

Java集合框架是什么?

Java集合框架图

集合接口

Collection集合适用场景分析

Collection集合Set和List的区别

List 接口:元素按进入先后有序保存,有序,可重复

Set 接口: 仅接收一次,无序,不可重复,并做内部排序

常用方法

Map 接口 键值对的集合 (双列集合)

List集合

ArrayList

LinkedLsit

Set集合

HashSet

LinkedHashSet

TreeSet

Map

HashMap

LinkedHashMap

TreeMap


Java集合框架是什么?

Java中的集合框架指的是一组接口、类和算法,用于存储和操作一组对象。这些对象可以是基本类型、自定义类型或其他Java对象

集合框架提供了更加高效、灵活和功能丰富的数据结构,而不限于数组或其他简单的数据结构。通过使用Java的集合框架,可以大大提高代码的可读性、可维护性和可扩展性

集合框架主要分为三个部分:Collection接口、Map接口和其他集合类

Java集合框架图

Java集合框架详解_第1张图片

集合接口

集合框架定义了一些接口。本节提供了每个接口的概述:

Collection接口

Collection 是最基本的集合接口,一个 Collection 代表一组 Object,即 Collection 的元素, Java不提供直接继承自Collection的类,只提供继承于的子接口(如List和set)。

Collection 接口存储一组不唯一,无序的对象。

list接口

List接口是一个有序的 Collection,使用此接口能够精确的控制每个元素插入的位置,能够通过索引(元素在List中位置,类似于数组的下标)来访问List中的元素,第一个元素的索引为 0,而且允许有相同的元素。

List 接口存储一组不唯一,有序(插入顺序)的对象。

Set List 接口

List接口是一个有序的 Collection,使用此接口能够精确的控制每个元素插入的位置,能够通过索引(元素在List中位置,类似于数组的下标)来访问List中的元素,第一个元素的索引为 0,而且允许有相同的元素。

List 接口存储一组不唯一,有序(插入顺序)的对象。

Map Map 接口存储一组键值对象,提供key(键)到value(值)的映射。
SortedMap 继承于 Map,使 Key 保持在升序排列。

Collection集合适用场景分析

Java集合框架详解_第2张图片

Collection集合Set和List的区别

List 接口:元素按进入先后有序保存,有序,可重复
  1. LinkedList 接口实现类, 链表, 插入删除, 没有同步, 线程不安全
  2. ArrayList 接口实现类, 数组, 随机访问, 没有同步, 线程不安全
  3. Vector 接口实现类 数组, 同步, 线程安全

Set 接口: 仅接收一次,无序,不可重复,并做内部排序
  1. HashSet 使用hash表(数组)存储元素
  2. LinkedHashSet 链表维护元素的插入次序
  3. TreeSet 底层实现为二叉树,元素排好序

常用方法
方法名 描述
public boolean add(E e) 把给定的对象添加到当前集合中 
public void clear()  清空集合中所有的元素
public boolean remove(E e) 把给定的对象在当前集合中删除

public boolean contains(Object obj)

判断当前集合中是否包含给定的对象

public boolean isEmpty() 判断当前集合是否为空
public int size() 返回集合中元素的个数。

Map 接口 键值对的集合 (双列集合)

  1. Hashtable 接口实现类, 同步, 线程安全
  2. HashMap 接口实现类 ,没有同步, 线程不安全
  3. LinkedHashMap 有序

List集合

概念:List集合因为支持索引,所以多了很多与索引相关的方法,当然,Collection的功能List也都继承了。

方法名 描述
void add(int index,E element) 在此集合中的指定位置插入指定的元素
E remove(int index) 删除指定索引处的元素,返回被删除的元素
E set(int index,E element) 修改指定索引处的元素,返回被修改的元素

E get(int index)

返回指定索引处的元素

ArrayList

特点:存取有序、可重复、有索引

底层原理:是基于数组实现的 

利用无参构造器创建的集合,会在底层创建一个默认长度为0的数组

添加第一个元素时,底层会创建一个新的长度为10的数组

存满时,会扩容1.5倍

使用场景:大量数据的查询、 少量数据的增删

LinkedLsit

数据结构:双链表 、查询慢、增删快

Java集合框架详解_第3张图片

Set集合

特点: 无序:添加数据的顺序和获取出的数据顺序不一致;

HashSet

底层原理:基于哈希表实现。 哈希表是一种增删改查数据,性能都较好的数据结构。

哈希表 JDK8之前,哈希表 = 数组+链表

LinkedHashSet

    LinkedHashSet 是 HashSet的子类
    LinkedHashSet底层是一个LinkedHashMap,底层维护了一个数组+双向链表
    LinkedHashSet 不允许添重复元素

TreeSet

特点:不重复、无索引、可排序(默认升序排序 ,按照元素的大小,由小到大排序) 底层是基于红黑树实现的排序

三、Map

Map是双列集合的祖宗,它的功能是全部双列集合都可以继承过来使用的。

根据键值对进行存储。

HashMap

特点:无序、不重复、无索引;

哈希表 JDK8之前,哈希表 = 数组+链表

JDK8开始,哈希表 = 数组+链表+红黑树 哈希表是一种增删改查数据,性能都较好的数据结构。

LinkedHashMap

特点:(由键决定特点): 有序、不重复、无索引。

底层原理:底层数据结构依然是基于哈希表实现的,只是每个键值对元素又额外的多了一个双链表的机制记录元素顺序(保证有序)。

TreeMap

特点:由键决定特点:按照键的大小默认升序排序、不重复、无索引。

由键决定特点:按照键的大小默认升序排序、不重复、无索引。

TreeMap集合同样也支持两种方式来指定排序规则

让类实现Comparable接口,重写比较规则。

TreeMap集合有一个有参数构造器,支持创建Comparator比较器对象,以便用来指定比较规则。
 

总结不易,给个小攒攒吧~

你可能感兴趣的:(java,开发语言,集成学习,程序人生)