Java基础——单列、双列集合总结

栈:现金后出,入口和出口都是栈顶,存储元素都是吧元素粗出到栈的顶端位置,栈中已有元素一次向栈底方向移动。

队列:先进先出,队列的入口和出丑各占一侧

数组:查找元素快(通过索引可以快速访问指定位置的元素),增删元素慢(需要创建一个新数组,将指定新元素存储在指定索引位置,将新元素复制到指定索引位置/将要删除的元素不复制到新数组中,)

链表:各个节点之间,通过地址进行连接。一个节点存储了指针域(存储的地址)和数据域(存储的数值)。增删元素快,查找慢。

1.collection:单列集合

List接口:

特点:可以存储重负元素,有序的

特有方法:add(),get(),remove(),set()

ArrayList:

存储的结构:数组

查询快,增删慢,线程不安全,效率高

方法:add(),get(),size(),remove(Object o),remove(int index),set(int index,E element)

LinkedList:

存储的结构:链表

查询快,增删慢,线程不安全,效率高

方法:addFirst(),addList(),getFirst(),getList(),removeFirst(),removeLast(),pop(),push(),isEmpty()

set接口:

不能存储重复元素,无序的

取出元素的方式:迭代器,增强for

HashSet:

存储的结构:哈希表(将对象存放到底层数组中,也称:哈希数组)

存储介绍:当向HashSet中存储对象时,这些对象向数组中存放的位置比较特殊,当需要把这些对象给数组中存放时,那么就会根据这些对象的特有数据结合相应的算法,计算出这个对象在数组中的位置,然后把这个对象存放在数组中。这种数组就称为哈希表,即哈希表。

当向哈希表中存放元素时,需要根据元素的特有数据结合相应的算法,这个算法其实就是Object类中的hashCode方法。由于任何对象都是Object类的子类,所以任何对象有拥有这个方法。即就是在给哈希表中存放对象时,会调用对象的hashCode方法,算出对象在表中的存放位置,这里需要注意,如果两个对象hashCode方法算出结果一样,这样现象称为哈希冲突,这时会调用对象的equals方法,比较这两个对象是不是同一个对象,如果equals方法返回的是true,那么就不会把第二个对象存放在哈希表中,如果返回的是false,就会把这个值存放在哈希表中。

特点:无序(迭代顺序和存储顺序不同),元素唯一不能重复

保证元素唯一性的方式:依赖于hashCode()与equals()方法。

LinkedHashSet:

存储的结构:哈希表结构+链表结构

特点:元素唯一不能重复,元素的存取的顺序一致。

2.Map接口:双列集合

key不能重复,value可以重复,一个键对应一个值。

方法:get(),put(),remove()

HashMap:

存储的结构:哈希表

保证键的唯一重写hashcode()方法、equals()方法

特点:key不能重复,线程不安全的集合,运行速度快

允许存储null值,null键

LinkedHashMap:(HashMap的子类)

存储的结构:哈希表+链表

特点:key不能重复,通过重写hashCode()与equals()方法来保证键的唯一

 

HashTable:

存储结构:哈希表,特点和hashmap是一样的

线程安全的集合,运行速度慢

不允许存储null值,null键

 

 

 

 

猜你喜欢

转载自blog.csdn.net/weixin_41933719/article/details/86519779