Java中各种集合总结(一)

(一)集合与数组

数组:(存基本数据类型)-->存对象的一种容器,长度固定,【不适合在对象数量未知的情况下使用】

集合:(存对象,对象类型可以不一样)-->长度可变,可在多数情况下使用。

(二)层次关系

1.0 如图所示:图中,实线边框的是实现类,折线边框的是抽象类,而点线边框的是接口:

2.0 其中集合的 详解

Collection接口【集合类  ”根接口“;Java中没有这个接口的直接实现类】----(有两个儿子)---->

    List:(有序、重复--(又有俩儿儿子)-->

             ArrayList:底层数据结构--->【动态数组   ;线程不安全,效率高】--->查询快,增删慢【移动所有数据】。

             LinkedList :底层数据结构--->【链表;线程不安全,效率高】--->查询慢,增删快。【特别适用于批量插入删除数据

             Vector:底层数据结构--->【数组;线程安全,效率低】-->查询快,增删慢

     Set:(无序、唯一)--->提供了按索引访问的方式。

              HashSet:底层结构--->【哈希表---依赖俩儿方法->hashCode()和equals()】(一般规则:对象equals 是true的话,hashCode需要相同,但是hashCode相同的对象不一定equals,这就是所谓的冲突现象,但是有不同的冲突解决方法。你的hashCode()设计的好的话冲突也就小了。比如楼上给出的超出int范围之后这种hashCode()实现,对象肯定是无数的,但是hash实现是有限的呢,所以冲突了。)

              TreeSet: 底层结构--->【红黑树】:一种自平衡的二叉树。返回值是否为0-->唯一性;

               LinkedHashSet【有序,不重复】:底层结构--->【链表和哈希表】链表保证有序;哈希表保证-->唯一

②Map:(键值对、键唯一、值不唯一)与Collection接口独立的,另一个接口。--->Map包含了key-value对。Map不重复的key,但可有相同的value

               HashMap:底层结构-->【哈希表;线程不安全,效率高--依赖俩儿方法-->hashCode()和equals()判断是否添加到集合】

               Hashtable:底层结构--->【哈希表;线程安全,效率低】-->依赖俩儿方法->hashCode()和equals()

               LinkedHashMap: 底层结构--->【链表和哈希表】:链表保证有序;哈希表保证唯一。

               TreeMap: 底层结构--->【红黑树】返回值是否为0-->唯一性

③Iterator:所有的集合类-->都实现这个接口。【遍历集合元素的接口】用法:

             (1)hasNext()是否还有下一个元素。

             (2)next()返回下一个元素。

             (3)remove()删除当前元素。

3.0 几种重要接口和类的对比:

             

             

原文地址:https://www.cnblogs.com/not-alone/p/8536754.html