集合

集合框架    

一、collection

collection接口是所有单列集合的根,然后被List、Set、queue、Stack四大集合继承(容量:jdk1.8版本之前,初识容量,10,超过提升为1.5倍;1.8版本以后,初识容量为0,通过add(),初识容量为10,超过提升1.5倍)

 1、List (有序,可重复)

            1.1  Arraylist  底层由数组实现,有序可重复,线程不安全,查找效率高

            1.2 LinkedList 底层由链表实现,有序可重复,线程不安全,增删效率高

            1.3 Vector 线程安全的Arraylist (初始容量10,扩充时,2倍扩充)

 2、set(元素是无序的,不可以重复,没有索引)

            2.1 HashSet: 底层数据结构是哈希表(存入对象时,先判断hashCode()得到的值,如果一样,再用equals方法比较,在相同就当做同一个元素,不同就在同一个位置上串联存储两个元素),线程不安全,存取速度快

            2.2 TreeSet :底层数据结构是二叉树,线程不安全。可以对Set集合中的元素进行排序

 3、queue:先进先出可以考虑Queue队列

 4、stack:先进后出可以考虑Stack,递归!!!!压栈 ,弹栈

二、Map(双列集合)

Map集合是一个接口,和Collection集合不同的是,它是双列集合,也就是说他所存储的是键值对。(其中键要求唯一,一个键不能对应多个值,Map集合没有Iterator迭代器,如果需要迭代需要转化为单列集合间接迭代)(初始容量为16,0.75时,扩充为原来2倍)

             1、HashMap:底层由数组+链表+红黑树实现,线程不安全,无序,键值可以为null,效率高。

             2、ConcurrentHashMap:底层由数组+链表+红黑树实现,线程安全,无序,键值不可以为null(同步代码块)。

             3、HashTable:底层由数组+链表+红黑树实现,线程安全,已被取代(同步方法)

数据存储时,通过key值得hashcode,计算出hash值,如果引发hash冲突,就在该数组位置引出链表,当链表数超过8,则变为红黑树,链表数小于6,变为数组+链表

三、迭代器

迭代器是针对单列集合使用的,底层主要有三个方法,hasnext()、tnext()、remove();

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • ArrayList实现原理要点概括 参考文献:http://zhangshixi.iteye.com/blog/6...
    晨光光阅读 1,114评论 0 1
  • 集合分为单例集合与双列集合 双列集合的5种遍历方式 import java.util.*; public clas...
    一生所爱_d2ab阅读 312评论 0 1
  • 原文地址 Java集合 Java集合框架:是一种工具类,就像是一个容器可以存储任意数量的具有共同属性的对象。 Ja...
    gyl_coder阅读 1,002评论 0 8
  • Java集合类可用于存储数量不等的对象,并可以实现常用的数据结构如栈,队列等,Java集合还可以用于保存具有映射关...
    小徐andorid阅读 1,998评论 0 13
  • 集合类框架的介绍: ![Java 集合类框架](https://upload-images.jianshu.io/...
    LynnGuo阅读 770评论 0 1