java中常见的集合总结
今天来简单总结下java中常见的集合,如下图所示: java中的集合主要分为单列集合Collection和双列集合Map
一、单列集合 Collection接口中定义的是所有单列集合中共性的方法,所以在最顶端。 1.1 List接口继承自Collection接口,且List是一个有序、带索引、可重复的一个集合。 ArrayList继承了List接口,底层数据结构是数组,查询快、增删慢。(ArrayList也是开发中最常用到的一个集合,但其实用ArrayList去完成所有的需求并不严谨,不太提倡哦~) LinkedList集合底层数据结构是链表,查询慢、增删快。 1.2 Set接口同样继承Collection接口,Set接口相较List它的元素是无序、不重复的。 HashSet是Set接口的一个实现类,其保证元素唯一的方式依赖于hashCode与equals方法。所以当向HashSet中存放自定义对象时,必须重写hashCode和equals方法,建立自己的比较方式,才能保证HashSet集合中的对象唯一。 TreeSet则将放入其中的元素按序存放,这就要求你放入其中的对象是可排序的,这就用到了集合框架提供的另外两个实用接口Comparable和Comparator。 哈希表:jdk1.8之前哈希表底层采用数组+链表实现,1.8之后哈希表由数组+链表+红黑树实现,引入红黑树后大程度优化了HashMap的性能。 二、双列集合 Map接口中存储的元素是键值对类型的,Map<K,V>,key和value一一对应,其中key不可重复,value可重复。 HashMap底层是哈希表,查询很快,且是一个无序集合,存入和取出的元素顺序可能不一致 LinkedHashMap底层是哈希表+链表,是一个有序集合,存入和取出的元素顺序一致 三、数组和链表的特点 数组原理解析: 链表原理解析: