Java容器
sun cat
只有让自己变得更优秀,才无所畏惧
展开
-
列举java的集合以及集合之间的继承关系
原创 2019-07-08 22:53:48 · 1095 阅读 · 2 评论 -
容器类介绍以及之间的区别
容器类估计很多人没听这个词,Java容器主要可以划分为4个部分:List列表、Set集合、Map映射、工具类(Iterator迭代器、Enumeration枚举类、Arrays和Collections)Collection是List和Set两个接口的基接口List在Collection之上增加了"有序"Set在Collection之上增加了"唯一"ArrayLis...原创 2019-07-09 07:53:30 · 1372 阅读 · 0 评论 -
集合类以及集合框架
集合类:集合类存放于java.util包中。集合类存放的都是对象的引用,而非对象本身,出于表达上的便利,我们称集合中的对象就是指集合中对象的引用(reference)。集合类型主要有3种:set(集)、list(列表)和map(映射)。总的说来,Java API中所用的集合类,都是实现了Collection接口,他的一个类继承结构如下:Collection<--List&...原创 2019-07-08 22:55:00 · 203 阅读 · 0 评论 -
List,Set,Map的区别
List,Set都是继承自Collection接口,Map则不是1.List特点:元素有放入顺序,元素可重复 ,Set特点:元素无放入顺序,元素不可重复,重复元素会覆盖掉,(注意:元素虽然无放入顺序,但是元素在set中的位置是有该元素的HashCode决定的,其位置其实是固定的,加入Set的Object必须定义equals()方法,另外list支持for循环,也就是通过下标来遍历,也可以...原创 2019-07-09 07:55:57 · 114 阅读 · 0 评论 -
集合Set实现Hash怎么防止碰撞
重写hashcode()和equles()方法可以看到在遍历table中的元素判断键和值,1,如果hash码值不相同,说明是一个新元素,存储;如果没有元素和传入对象(也就是add的元素)的hash值相等,那么就认为这个元素在table中不存在,将其添加进table;2.1,如果hash码值相同,且equles判断相等,说明元素已经存在,不存;2.2,如果hash码值相同,且e...原创 2019-07-19 22:41:52 · 2671 阅读 · 0 评论 -
HashSet与HashMap怎么判断集合元素重复?
HashMap中判断元素是否相同主要有两个方法,一个是判断key是否相同,一个是判断value是否相同HashSet不能添加重复的元素,当调用add(Object)方法时候,首先会调用Object的hashCode方法判hashCode是否已经存在,如不存在则直接插入元素;如果已存在则调用Object对象的equals方法判断是否返回true,如果为true则说明元素已经存在,如为fal...原创 2019-07-19 22:40:52 · 4244 阅读 · 0 评论 -
HashMap与HashSet的区别
HashSet实现了Set接口,它不允许集合中有重复的值,当我们提到HashSet时,第一件事情就是在将对象存储在HashSet之前,要先确保对象重写equals()和hashCode()方法,这样才能比较对象的值是否相等,以确保set中没有储存相等的对象。如果我们没有重写这两个方法,将会使用这个方法的默认实现。HashMap实现了Map接口,Map接口对键值对进行映射。Map中不允许重复的键...原创 2019-07-09 08:10:15 · 127 阅读 · 0 评论 -
HashMap和HashTable的区别
HashMap和Hashtable都实现了Map接口,但决定用哪一个之前先要弄清楚它们之间的分别。主要的区别有:线程安全性,同步(synchronization),以及速度。HashMap几乎可以等价于Hashtable,除了HashMap是非synchronized的,并可以接受null(HashMap可以接受为null的键值(key)和值(value),而Hashtable则不行)。H...原创 2019-07-09 08:09:51 · 246 阅读 · 0 评论 -
HashTable实现原理
Hashtable与HashMap的区别Hashtable与HashMap都是用来存储key-value类型数据的,两者有如下区别:Hashtable不允许null key和null value,HashMap允许。 Hashtable是线程安全的,HashMap不是线程安全的。 HashMap的迭代器(Iterator)是fail-fast迭代器,而Hashtable的enumera...原创 2019-07-09 08:06:40 · 602 阅读 · 0 评论 -
ArrayMap和HashMap的对比
HashMapHashMap内部是使用一个默认容量为16的数组来存储数据的,而数组中每一个元素却又是一个链表的头结点或者红黑树的根节点,所以,更准确的来说,HashMap内部存储结构是使用哈希表的数组+链表+红黑树。如图:这些Entry数据是按什么规则进行存储的呢?就是通过计算元素key的hash值,然后对HashMap中数组长度取余得到该元素存储的位置,计算公式为(key =...原创 2019-07-09 08:05:05 · 2499 阅读 · 0 评论 -
HashMap源码理解
HashMap如何put数据(从HashMap源码角度讲解)HashMap怎么手写实现HashMap有两个影响性能的重要参数:初始容量和加载因子。容量是Hash表中桶的个数,当HashMap初始化时,容量就是初始容量。加载因子是衡量hash表多满的一个指标,用来判断是否需要增加容量。当HashMap需要增加容量时,将会导致rehash操作。默认情况下,0.75的加载因子在时间和空...原创 2019-07-09 08:03:25 · 331 阅读 · 0 评论 -
HashMap数据结构
HashMap的数据结构数据结构中有数组+链表+红黑树来实现对数据的存储,但这两者各有利弊。数组:数组存储区间是连续的,占用内存严重,故空间复杂度大。但数组的二分查找时间复杂度小,为O(1);数组特点:寻址容易,插入和删除困难;链表:链表存储区间离散,占用内存比较宽松,故空间复杂度很小,但时间复杂度很大,达O(N)。链表特点:寻址困难,插入和删除容易。...原创 2019-07-09 08:00:48 · 143 阅读 · 0 评论 -
HashMap的实现原理
HashMap实际上是数组+红黑叔+链表的结合体如果数组该位置上已经存放有其他元素了,那么在这个位置上的元素将以链表/红黑树的形式存放。如果数组该位置上没有元素,就直接将该元素放到此数组中的该位置上。如果数组该位置上有元素,判断是否是红黑树结果,如果是,则用红黑树插入法插入。如果不是红黑树,那就是链表,加入到链表最后(链表大小超过8要转换成红黑树结构)...原创 2019-07-09 07:57:54 · 233 阅读 · 0 评论 -
List和Set和Map的实现方式以及存储方式
List:常用实现方式有:ArrayList和LinkedListArrayList 的存储方式:数组,查询快LinkedList的存储方式:链表,插入,删除快Set:常用实现方式有:HashSet和TreeSetHashSet的存储方式:哈希码算法,加入的对象需要实现hashcode()方法,快速查找元素TreeSet的存储方式:按序存放,想要有序就要实现Compa...原创 2019-07-09 07:56:44 · 3076 阅读 · 0 评论 -
ArrayList和LinkedList的区别,以及应用场景
1、ArrayList是基于数组实现的,其构造函数为:private transient Object[] elementData;private int size;ArryList初始化时,elementData数组大小默认为10;每次add()时,先调用ensureCapacity()保证数组不会溢出,如果此时已满,会扩展为数组length的1.5倍+1,然后用array...原创 2019-07-19 22:42:37 · 979 阅读 · 0 评论