Java集合框架结构

91 阅读4分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第20天,点击查看活动详情

Java中集合框架结构:

Collection(接口):单列集合

  • List(接口):有序的,可以存储重复元素

    • ArrayLIst(子类):数组结构

    • LinkedList(子类):链表结构

  • Set(接口):无序的,不能存储重复元素

    • HashSet(子类):哈希表结构

    • LinkedHashSet(子类):链表、哈希表结构 

Map(接口):双列集合--数据结构全部是应用在"键"

  • HashMap(子类):"键"是哈希表结构

  • LinkedHashMap(子类):"键"是链表、哈希表结构。

Collection接口常用方法:

  • 1.boolen add(Object e);添加  向集合中添加一个元素;如果元素存储成功返回true(对于ArrayList,永远返回true);如果存储失败,返回false,例如:向HashSet中添加一个重复元素时,会返回false。

  • 2.clear();清空

  • 3.boolean contains(Object o):如果当前集合中包含对象o,返回true,否则返回false;

  • 4.boolean remove(Object o) : 从集合中移除对象o,成功返回true,否则返回false

  • 5.int size():获取集合大小

  • 6.Object[] toArray():将集合内的所有元素存储到一个Object[]中,并返回。将集合转换为数组;

  • 7.Iterator iterator():获取一个迭代器,用于遍历元素的。

List集合特有方法:

  • public void add(int index,Object element):在index位置插入元素element,原index及其后续元素依次后移。

  • public int indexOf(Object o):返回此列表中第一次出现的指定元素的索引;如果此列表不包含该元素,则返回 -1

  • public ListIterator listIterator():返回"列表迭代器",双向迭代器,它是Iterator的子接口。

  • public Object remove(int index):移除index位置上的元素;

  • public E set(int index,E element):将index位置上的元素替换为element,返回值:被替换的元素;

  • public List subList(int fromIndex,int toIndex):截取集合,从fromIndex开始,到toIndex - 1 的位置

  • public E get(int index) : 获取index位置上的元素;

集合_数据结构_

    1.特点:后进先出;

    2.作用:模拟现实中的:压弹夹,摞文件.....

image.png

集合_数据结构_队列

    1.特点:先进先出

    2.作用:模拟现实中任何排队形式的应用,队列最前面的得到最先处理。

image.png

集合_数据结构_数组

    1.特点:查询快,增删慢;

    2.作用:对于有序的存储、不经常增删的集合需求,非常适用;

image.png

集合_数据结构_链表

    1.特点:查询慢,增删快;

    2.作用: 由于有序的存储、而且需要经常增删元素的需求,可以使用链表

image.png

LinkedList的特有方法:

  • addFirst(Object o):可以模拟压栈,将元素添加到当前列表的第一个位置。、

    addLast(Object o):可以模拟队列,将元素添加到氮气列表的末尾。

  • getFirst():获取第一个元素

    getLast():获取最后一个元素

  • removeFirst():移除第一个元素(getFirst() + removeFirst()就可以模拟弹栈)

    removeLast():移除最后一个元素

  • pop():获取第一个元素,并且移除掉第一个元素。可以实现弹栈

  • push():相当于addFirst(),压栈

  • isEmpty():判断列表是否为空。还可以用size();方法判断列表是否为空

HashSet的基本使用:

  • Set集合的特点:
    • 无序的;
    • 不能存储重复元素;

注意:Set分支,没有特有方法,全部都是使用从Collection继承下来的方法。

集合_哈希表结构

    见图:

image.png

    所以:判断元素的唯一性:

        先判断hashCode(),然后再判断equals()

集合_自定义对象重写equals方法和hashCode方法

    1.要使用HashSet存储自定义对象,需要对自定义对象重写:hashCode()和equals()方法

LinkedHashSet的特点:

LinkedHashSet:它是Set的特例,它是有序的Set

由链表保证顺序;

由哈希表保证元素唯一

数据结构小结:

    1).栈:可以使用LinkedList实现。后进先出

    2).队列:可以使用LinkedList实现。先进先出

    3).数组:ArrayList。查询快,增删慢

    4).链表:LinkedList。查询慢,增删快

    5).哈希表:HashSet。综合了数组和链表的优点,查询,增删都快。但任何操作都要先经过哈希算法,所以哈希算法的复杂度决定了哈希表的性能。

判断集合元素唯一的原理

    先判断hashCode():

        不同:存储

        相同:再和相同哈希值的所有对象依次判断equals()

            全部不同:存储

            有一个相同:不存