首页 > 其他 > 详细

集合——源码分析

时间:2019-12-07 21:57:51      阅读:110      评论:0      收藏:0      [点我收藏+]


1. 什么是集合

  • 集合是一个用来存放数据的容器(数组也是),但集合不同的是可以存放不同类型的对象,并且大小可变
  • 其常用类型有Set,List,Map。这些常用的类型往上提取就有了Collection和Map接口

技术分享图片


1.1 Collection接口的方法

技术分享图片

add(E):添加一个对象
addAll(Collection<? extengds E>):添加指定集合里的全部对象

clear():清空集合
remove(Object):移除一个对象
removeAll(Collection<?>):移除集合里的全部对象

contains(Object):是否包含某个对象
containsAll(Collection<?>):是否包含某集合的全部对象
isEmpty():集合是否为空
size():集合对象的个数
retainAll(Collection<?>):交集,结果放在调用方法的集合

iterator():获取迭代器


1.2 Iterator迭代器

Collection接口继承Iterable接口,而Iterable接口有iterator()方法,该方法返回一个迭代器(用于遍历集合)

技术分享图片


1.3 iterator也是一个接口,里面有四个方法

技术分享图片


1.4 Map接口的方法

技术分享图片

containsKey(Object):是否包含该Key
containsValue(Object):是否包含该Value
get(Object):根据Key获取Value
put(K,V):添加一个键值对
remove(Object):根据Key移除一个键值对




2. 常见的三个集合类型


一. List——有序,可重复


1. ArrayList (底层是数组)

  • add 是最常用的方法了,我们来看看源码

技术分享图片


  • get

技术分享图片


  • set

技术分享图片


  • remove

技术分享图片


  • toArray

技术分享图片






2. LinkedList (底层是双向链表)

  • add国际惯例,看源码

技术分享图片


  • remove

技术分享图片

链表实现移除元素的图示

技术分享图片


  • get

技术分享图片


  • set

技术分享图片






二. Map

Map不同于Collection集合,Map存放的是键值对,且键不能重复


1 .HashMap (底层哈希表,Java中用链表的数组实现,无序)

  • put (相当于Collection的add)

技术分享图片


  • get

技术分享图片


  • remove 也是相同方式就偷懒不放出来了




2. TreeMap (底层红黑树,用Comparator排序)

  • put

技术分享图片


  • get

技术分享图片


  • remove

技术分享图片






三. Set——无序,不可重复


1. HashSet

  • 注意其构造函数,底层用的是HashMap,而Set集合存的不是键值对怎么办?

技术分享图片


  • Set的值存入Map的键里面,而Map的全部值存放同一个Object

技术分享图片

其余都和HashMap一致,不再赘述


2. TreeSet


  • 更加和TreeMap一致,懒得说了








集合——源码分析

原文:https://www.cnblogs.com/Howlet/p/12003389.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!