1.List 和 Set 区别
List和Set都是Conllection接口的子接口。 List中的元素是有顺序的,可以重复的。 Set中的额元素是没有顺序的,不可以重复的. |
2.Set和hashCode以及equals方法的联系
Set是通过hashCode和equals比较元素是否重复的。 先使用hashcode方法判断已经存在HashSet中元素的hashcode值和将要加入元素hashcode值是否相同。如果不同,直接添加;如果相同,再调用equals方法判断,如果返回true表示HashSet中已经添加该对象了,不需要再次添加(重复),如果返回false就表示不重复,可以直接加入HashSet中 |
3.List 和 Map 区别
List:是存储单列数据的集合,存储的数据是有序并且是可以重复的 Map:存储双列数据的集合,通过键值对存储数据,存储 的数据是无序的,Key值不能重复,value值可以重复 |
4.Arraylist 与 LinkedList 区别
1 ArrayList底层使用数组实现。LinkedList底层使用链表实现。 2 对于随机方法 get和set ArrayList的优于LinkedList,因为LinkedList查询时需要指针移动。 3 对应增删改操作 LinkedList优于ArrayList,因为ArrayList需要创建新数组拷贝数据,元素数量越多效率差距越大。 |
5.ArrayList 与 Vector 区别
1 ArrayList和Vector都是list的实现类。 2 ArrayList和Vector底层都是数组实现的。 区别 1 ArrayList的所有方法都不是线程安全的,Vector的所有方法都是线程安全的。 2 ArrayList和Vector的空间增长方式不同,ArrayList按照1.5被扩容,Vector当扩容容量大于0时,新数组的长度为原数组的长度+扩容容量。否则新数组的长度为原数组的两倍。 |
6.HashMap 和 Hashtable 的区别
核心区别: 1 HashMap的方法不是同步的,Hashtable的方法是同步的。 2 HashMap允许value为null,允许有一个key为null。Hashtable不允许出现为null的key和value。 次要区别: 1 HashMap和Hashtable继承的父类不同。 2 两个Api也略有不同, 3 Hashtable默认的初始大小为11,之后每次扩充,容量变为原来的2n+1。HashMap默认的初始化大小为16。之后每次扩充,容量变为原来的2倍 |
7.HashSet 和 HashMap 区别
1 HashMap实现的是Map接口。HashSet实现的是Set接口。 2 HahsMap是以键值对的形式存储数据,HashSet只是存储对象。 3 HashMap使用键值对来计算HashCode,HashSet使用对象来计算HashCode |
8.HashMap 和 ConcurrentHashMap 的区别
1 HashMap不是线程安全的,ConcurrentHashMap是线程安全的。 2 ConcurrentHashMap对整个桶数组进行了分段,而HashMap则没有 |
9.HashMap 的工作原理
原理:HashMap是基于hashing的原理,我们使用put(key, value)存储对象到HashMap中,使用get(key)从HashMap中获取对象。当我们给put()方法传递键和值时,我们先对键调用hashCode()方法,返回的hashCode用于找到bucket位置来储存Entry对象。 |